安下载(俺下载):打造放心的绿色安全下载站! 安下载首页|软件分类|最近更新

所在位置: 首页  >  电脑软件  >  编程开发  >  编程工具 > HexIt(十六进制编辑器) v1.57 绿色版
HexIt(十六进制编辑器)

HexIt(十六进制编辑器)

 v1.57 绿色版
  • 软件大小:0.26 MB
  • 更新日期:2020-08-01 15:07
  • 软件语言:英文
  • 软件类别:编程工具
  • 软件授权:免费版
  • 软件官网:
  • 适用平台:WinXP, Win7, Win8, Win10, WinAll
  • 软件厂商:

6
软件评分

本地下载文件大小:0.26 MB

软件介绍 人气软件 下载地址

为您推荐: 编程开发

  HexIt是一款高效的十六进制编辑器,它允许用户以非常低的级别编辑文件,从而可以查看文件的完整和确切的二进制内容,它对于修改二进制文件(例如可执行文件),编辑磁盘或CD映像,调试错误地生成二进制文件格式的程序以及许多其他功能很有用;十六进制编辑器已经存在很长时间了,从最基本的角度来说,它们的编写非常简单,由于它们主要用于编辑文件,其中包含对文件中特定字节位置的大量交叉引用,因此十六进制编辑器无需具有插入模式即可使用,没有插入模式的十六进制编辑器很容易实现,用户只需为输入文件分配足够大的数组,然后将其用作数据结构即可,您真正需要有效执行的唯一操作是跳转到特定的字节位置,这正是数组使数组变得容易的地方;需要的用户可以下载体验

HexIt(十六进制编辑器)

软件功能

  内置实时汇编器和反汇编器

  记录并播放宏、普通文本查看器

  比较两个文件、dec / hex / bin / oct的计算器

  查看/更改EXE标头

  通过屏蔽某些字符来过滤文本

  可配置的颜色,鼠标,按键等

  剪切,复制,粘贴的剪贴板

  搜索/替换、转到行/文件偏移

  编辑,包括 插入和删除字节、分屏

软件特色

  HexIt支持插入模式:如果您正在编辑可执行文件或文件系统映像

  则不是特别有用但是在其他文件格式中可能非常方便

  在您正在编辑的文件中剪切,复制和粘贴非常有效。

  无论您要走动的数据量有多大,即使它是CD映像的200Mb部分

  HexIt始终可以立即有效地执行操作。

  HexIt支持延迟加载输入文件:它不会立即将所有内容立即吸入内存,

  而只是记住编辑缓冲区的哪些部分是输入文件的哪些部分的副本,

  并在需要时引用磁盘上的文件。

  仅当您确实需要进行调整才能读取整个文件时,该调整才需要花费大量时间。

  使用此属性的仅有的两项操作是搜索,并将文件的修改后的版本保存到磁盘。

  其他一切都是即时的。

使用说明

  简单的选择

  在编辑器中用于支持插入模式的一种技术是使用比文件大的数组,其中要留有间隔。直到当前光标位置的文件内容都存储在数组的开头。从当前光标位置到末尾的文件内容存储在数组的末尾;中间的间隙随着光标的移动而移动。

  这使得插入变得容易。当用户插入一个额外的字符时,只需将其添加到空格的一端或另一端即可。另一方面,在文件中移动现在变得很慢。当您一次移动一个字节,一行甚至一个屏幕时,它并不明显,但是当您尝试跳至文件的开头或结尾或跳至特定的指定文件偏移量时,突然之间,编辑器不得不将大量文件数据从间隙的一端转移到另一端。

HexIt(十六进制编辑器)

  另一个更好的选择是使用小型数组的链表,并让数组的大小在K和2K字节之间变化,以获取固定的最小块大小K。在块中间插入单个字节不花钱太多了; 有时,该块会增长到超过2K的大小,并且必须分成两个较小的块,但即使这样也不太慢。

  但是,使用此结构仍然是O(N)操作。在实践中并非太糟糕,因为链表的长度是文件的大小,在最坏的1 / K倍; 但是一旦文件变得非常大,这种方法就无法很好地扩展。

  这两种方法的共同问题是,一旦您将插入操作设为恒定时间操作,寻找给定字节位置就会变成线性时间。当然,在原始数组格式中,搜索是恒定时间,但插入变为线性时间。

  使用平衡树

  这就是树木的来源。平衡的树木结构(AVL树,红黑树和B树中的任何一种)都解决了排序列表的这种问题。您可以在日志时间将元素插入平衡树中,也可以在日志时间搜索特定元素。这听起来像是我们想要的一种折衷方案:如果使插入时间恒定的力趋于线性,反之亦然,则我们希望将两者都设置为对数时间。

  但是,传统上使用平衡树来存储排序列表对我们没有立即的帮助。我们可以合理排序的唯一标准是文件中的字节位置。当我们将数据存储为一组(位置,数据)对时,我们又回到了线性插入,因为我们必须更改插入点之后每个树元素的位置字段。

  我们可以对平衡的树木做些什么来使这项工作更好?

  树木计数

  就在这里。

  假设您向平衡树的每个节点添加一个附加字段。在该字段中,存储该节点内或节点以下的元素数量的计数。

  现在,更改树(插入和删除)的操作必须确保这些计数保持准确。可以在不牺牲操作的日志时间特性的情况下完成此操作。例如,添加元素时,您将增加包含该元素的节点的计数,然后将树备份到根,从而增加您经过的所有节点中的计数。由于树的高度为O(log N),因此只需要O(log N)时间。

  因此,我们可以将计数添加到树上并仍然有效地维护它。伯爵买了什么?

  一旦我们对一棵树有了计数,它们就会引入一种全新的搜索树的方式。从根开始,我们可以通过检查count字段而不是像往常那样比较元素来搜索树。这样一来,我们就可以在一次登录时间搜索中为任意N个查找树中的第N个项目。例如,假设根树节点包含一个计数为54的子级,然后是一个实际元素,然后计数为73的子级。然后:

  如果您试图到达小于54的位置,则您将直接下降到最左边的孩子。

  如果要精确定位到位置54,则将元素从根节点中移出。

  如果您试图到达55或更高的位置,请下降到最右边的孩子,然后从所需位置减去55。(如果您想要树的元素57,那么您知道树中右侧子树之前有55个元素,因此您知道您想要右侧子树的元素2。)

  因此,现在我们有了一种在日志时间搜索中在树中找到第N个项目的方法。这开始看起来很有希望。

  麻烦的是,我们仍然无法在树上设置某种排序顺序。现在我们需要处理。

  未分类的树木

  排序问题的简单答案就是完全消除对树的排序!

  常规的平衡树具有排序顺序,因为它用于查找树中的元素并知道在何处添加元素。但是我们不再需要排序顺序来查找事物,因为我们可以使用基于计数的搜索来跳到第N个位置。我们能树添加操作过程中也使用数量,以使我们能够指定地方,我们希望添加我们的新元素?

  我们可以。树添加算法从搜索树开始以查找将要插入新元素的位置。如果使用计数进行搜索,其方式与所述完全相同,则可以在树中的任何位置添加所需的任何元素。当然,一旦完成此操作,我们就必须完全放弃排序顺序,并且永远不要再次进行基于订单的搜索或插入,因为它们将无法工作。但这没关系,因为我们还是不需要它们。

  现在,我们拥有的正是我们最初追求的目标。我们有一个数据结构,用于存储无序的项目列表,这样我们就可以在日志时间插入或删除项目,并在日志时间找到第N个元素。

  分裂和加入树木

  现在我们可以开始变得更有野心了。我们尚未解决的一个问题是剪切和粘贴。

  到目前为止,我已经假设在树中一次只能插入一个字符的情况下讨论了树插入。实际上,十六进制编辑器需要剪切和粘贴的程度与普通文本编辑器相同。因此,我们必须考虑如何一次插入或删除更大的数据块。

  一种明显的方法是分别处理每个字节。十字节的剪切操作是十个单独的删除,十字节的粘贴是十个单独的插入。如果您只使用剪切和粘贴在大文件中移动微小的数据块,这很好,但是如果您需要将文件的一半从一个位置移动到另一个位置,则事情会变得更加有趣。

  在讨论的链表结构在解决此问题方面将有很大帮助。链接列表不仅使插入或删除一项变得容易:一旦找到列表的两端,它们也使取消链接巨大的列表变得同样容易,并且您可以将该块链接到其他地方也容易。

  事实证明,平衡树可以做同样的事情。此时,您开始使用哪种平衡树开始有所不同:AVL,红黑和B树这三种树都支持这些操作,但是它们之间的精确方法有所不同。从现在开始,我将使用B树,因为算法稍微简单些。

  我们需要的是两个基本操作。给定一个包含无序项目列表的无序B树,我们需要能够:

  将树拆分到中间,给出两个有效的B树作为输出。

  取两个有效的B树并将它们端对端连接在一起,得到一个B树,其中包含来自树A的所有数据以及来自树B的数据。

  这将提供我们需要的所有操作。要从树的中间断开很大一部分,我们将其分成两个位置,然后将外部的两个部分重新连接在一起;要将大部分链接到树的中间,我们在插入点将其拆分,将左半部分连接到插入部分的左侧,然后将右半部分连接到插入部分的右侧。

人气软件