我有两个二进制文件,并假设它们应该相同,但它们不是。所以我使用二进制差异工具来查看它们。但是,两个不同的工具, Beyond Compare 和 UltraCompare ,在第一个字节的一个文件中给出了不同的结果。
我使用HxD工具验证内容,似乎HxD支持UltraCompare。
有人可以告诉我Beyond Compare的含义是什么吗?这是否意味着Beyond Compare在某些情况下不可靠?working demo
答案 0 :(得分:2)
In Beyond使用交叉影线比较空格▨背景表示缺少(添加或删除)字节。在你的图像中,左边的文件以一个0x00字节开头,右边的那个字节没有。 BC将在文件内容中显示间隙,以使其余字节在视觉上对齐。这也表明显示为“行号”的十六进制地址在两侧是不同的,并且是文件的其余部分显示为黑色(完全匹配)的原因。间隙对文件内容没有任何影响,它只是一种更清晰地呈现对齐的方法。
在这种情况下,UltraCompare显然没有调整对齐,所以每个0xC8字节都排成一个0x00,反之亦然,这就是整个比较显示为差异(红色)的原因。
HxD只显示单个文件,而不是比较,因此不需要使用间隙来显示对齐方式。 UltraCompare是否更好取决于您希望比较的内容。它只是比较字节1到字节1,字节2到字节2等,而BC正在调整文件,同时考虑添加和删除。在这种情况下,它显示左侧的字节1被添加,因此不匹配右侧的任何内容,左侧的字节2与左侧的字节1相同,左侧的字节3与字节2相匹配在右边等等。
如果二进制数据可以有插入和删除(例如,如果它包含文本字符串或可变长度标题),那么BC的方法更好,因为它避免了如果一方只有一个添加的字节(如在这种情况下)。
如果二进制数据是固定大小的,例如位图,那么UltraCompare正在做的更好,因为它没有调整偏移以更好地排列。由于您的文件名标记为“pixelData”,我认为这是您更喜欢的行为。在这种情况下,在Beyond Compare中,您可以使用Session菜单的Session Settings ...命令并将“Comparison”对齐设置从“Complete”切换为“None”来更改它。