为什么第一个字节与Beyond Compare工具中的一样?

why the first byte is like that in Beyond Compare tool?

我有两个 binary 文件,假设它们应该相同,但它们不是。所以我使用二进制差异工具来查看它们。但是两个不同的工具,Beyond CompareUltraCompare,在一个文件的 第一个字节 处给我不同的结果].

我用HxD工具验证了内容,HxD好像支持UltraCompare。

谁能告诉我 Beyond Compare 是什么意思?这是否意味着 Beyond Compare 在某些情况下不可靠?

在 Beyond Compare 中,带有交叉影线 ▨ 背景的空格表示丢失(添加或删除)的字节。在您的图像中,左侧的文件以 0x00 字节开头,而右侧的文件则没有。 BC 将显示文件内容中的间隙,以使其余字节在视觉上对齐。这也表明显示为 "line numbers" 的十六进制地址在两侧不同,这也是文件其余部分显示为黑色(完全匹配)的原因。间隙对文件内容没有任何影响,它只是一种更清晰地呈现对齐方式的方法。

在这种情况下,UltraCompare 显然没有调整对齐方式,因此每个 0xC8 字节都与 0x00 字节对齐,反之亦然,这就是为什么整个比较显示为差异(红色)的原因。

HxD 只是显示单个文件,不是比较,因此不需要使用间隙来显示对齐方式。 UltraCompare 是否更好取决于您希望比较做什么。它只是比较字节 1 和字节 1,字节 2 和字节 2 等,而 BC 正在对齐文件,同时考虑添加和删除。在这种情况下,显示添加了左侧的字节 1,因此不匹配右侧的任何内容,左侧的字节 2 与左侧的字节 1 相同,左侧的字节 3 匹配字节 2右边等等

如果二进制数据可以插入和删除(例如,如果它包含文本字符串或可变长度 headers),那么 BC 的方法会更好,因为它避免了将整个文件显示为不同的一面只是有一个添加的字节(在这种情况下)。

如果二进制数据是固定大小的,例如位图,那么 UltraCompare 的做法会更好,因为它不会调整偏移量来更好地对齐。由于您的文件名被标记为 "pixelData" 我认为这是您更喜欢的行为。在这种情况下,在 Beyond Compare 中,您可以通过使用 Session 菜单的 Session Settings... 命令并将 "Comparison" 对齐设置从 "Complete" 切换为 [=24] 来更改它=].