十六进制数据比较
十六进制差异会按字节比较二进制文件。ABDiff 始终提供原始 Hex 视图,也可以为识别出的二进制格式显示已解析的 结构 视图。
开始十六进制比较的方式
拖放
- 一个文件会打开独立的 Hex 查看器。
- 两个文件会打开十六进制差异。多于两个文件时使用最后两个。
文件菜单
- 文件 ▸ 在十六进制查看器中打开… 用于打开一个文件。
- 文件 ▸ 以十六进制差异打开… 用于打开两个文件。
- 文件 ▸ 以十六进制打开当前文件 用于将当前文件打开为十六进制差异。
终端
- 一个文件:
abd --hex file - 两个文件:
abd --hex file1 file2
Hex 查看器布局

内容从左到右依次为:
- 十六进制字节
- 解码后的文本预览
- 可用时显示结构树
十六进制差异比较
十六进制比较有两种对齐布局:
- 偏移 是默认模式。它会将左侧的 byte
n与右侧的 byten比较。 - 重新同步 是一种分析模式。它会尝试在插入或删除后恢复对齐,使后续匹配区域能够重新排成一行。
当一个移位区域会让文件剩余部分看起来都发生变化时,重新同步很有用。在重新同步中,同一水平行并不总是表示两侧具有相同的绝对偏移。当对齐区域来自不同的原始位置时,ABDiff 会有意显示不同的左右偏移。
Hex 与结构
原始 Hex 模式显示偏移、十六进制字节和解码后的文本预览。编码控件只影响该文本预览;原始字节仍然是事实来源。
当 ABDiff 识别出二进制格式时,它会添加 Hex / 结构 控件。结构模式会以树形显示格式元素,包括元素名称、偏移、长度、解码值和解析器诊断。选择结构行会选择对应的字节范围。双击结构行会切回 Hex 模式并显示该范围。
在单文件 Hex 查看器中,受支持的文件可以在 Hex 字节旁显示结构树。不受支持的文件会使用全部宽度显示原始 Hex。在双文件十六进制差异中,只要至少一侧被识别,就可以使用结构模式,并且 仅显示差异 会同时应用于结构行和原始 Hex 行。
特定格式的字段可能决定该字段的字节序或文本解码等细节。例如,ZIP 结构字段会按 ZIP 规则解析,而 Hex 文本预览仍可通过编码控件更改。
支持的结构格式包括:
- 归档:7z、GZIP、RAR、TAR、ZIP。
- Apple 和结构化数据:Apple binary plist、Apple bookmark、BSON、MessagePack。
- 证书和安全容器:CMS、DER、PEM、PKCS#12。
- 图像、音频、视频、颜色和 3D 容器:CUBE LUT、FLAC、GIF、GLB、HEIF / HEIC、JPEG、MIDI、MP3、MP4 / MOV、PNG、TIFF、WAV、WebP。
- 可执行文件和目标文件:ELF、Mach-O、PE/COFF。
- 数据库和网络捕获:PCAP、PCAPNG、SQLite、SQLite rollback journal、SQLite WAL。
有些通常会在其他查看器中打开的格式,也可以通过强制 Hex 作为结构检查。例如,GIF、TIFF 和 WebP 通常作为图像比较打开,PEM 通常作为文本打开。
视图选项
在 Hex 视图中,使用视图菜单或工具栏控件调整显示:
- 仅显示差异 会隐藏相同行,让你专注于已更改区域。这只是可见性筛选器,不会改变比较模式。
- 比较对齐 允许在 偏移 和 重新同步 之间切换。
- 每行字节数 更改每行换行的字节数:8、16 或 32。
- 交换左右 在加载两个文件时翻转左右两侧。
更改 每行字节数 不会改变底层差异结果。
检查字节
点按一个字节即可选择它。按住 Shift 点按,或将 Shift 与箭头键配合使用,可扩展选择范围。在单文件视图中,底部检查器会显示所选偏移、长度、匹配的结构元素和值预览。
使用值菜单或右键点按 复制为,可以将所选字节检查或复制为:
- 带空格的 Hex 或连续 Hex
- 二进制、Base64、C 数组或 Swift 数组
- 当字节可干净解码时,复制为 ASCII 或受支持的 Unicode 与旧式文本编码
- 当选择长度匹配值大小时,复制为整数和浮点值
- 选择 16 字节时复制为 GUID
LE / BE 控件为多字节数字设置 little-endian 或 big-endian 解释方式。当已解析结构固定了字节序时,ABDiff 会显示该字节序并禁用手动更改。
使用左上角的文件信息胶囊可打开摘要元数据。在结构化文件中,同一个弹出框还包含解析器元数据,例如容器摘要和不绑定到单个字节范围的格式特定事实。
查找和前往偏移
使用 编辑 ▸ 查找… 搜索活动二进制表面。在 Hex
视图中,查找会智能处理字节搜索:有效的十六进制语法如
1F 8B、0x1F8B 或 1f-8b
会搜索原始字节,而 Papyrus 这样的文本会将相同字节作为 UTF-8
搜索,且不会切换模式。看起来像 Hex
但无法描述完整字节的输入会报告无效搜索,而不是猜测。
在结构视图中,查找会自动匹配已解析的结构名称和值。没有搜索模式选择器;活动视图决定搜索目标。
使用 导航 ▸ 前往偏移…
跳转到字节偏移。偏移默认是十六进制;使用 0x
表示显式十六进制,使用 d: 表示十进制,使用 + /
- 表示相对于所选字节的偏移。
直方图和熵
使用工具栏中的直方图按钮检查字节分布、熵、主要字节值,以及高熵或大量填充等粗略分类。在单文件 Hex 视图中,直方图面板还可以在 Hex 行旁显示 熵图 条带,以便快速浏览文件。
只读行为
十六进制数据比较是只读的:
- 它不提供文本编辑命令。
- 它不支持保存或另存为补丁。
- 解码文本列和结构树是检查辅助;用于比较的事实来源是原始字节。
键盘速查
| 操作 | 快捷键 |
|---|---|
| 将选择向左移动 | ← |
| 将选择向右移动 | → |
| 将选择向上或向下移动 | ↑ / ↓ |
| 扩展字节选择 | ⇧ 加箭头键 |
| 切换到另一个窗格 | ⇥ |
| 从右窗格或结构移回焦点 | ⇧⇥ |
| 展开所选结构行 | → |
| 折叠所选结构行 | ← |