【发布时间】:2011-10-20 09:51:28
【问题描述】:
通常,为了找出两个二进制文件的不同之处,我使用 diff 和 hexdump 工具。但是在某些情况下,如果给定两个相同大小的大型二进制文件,我只想查看它们的数量差异,例如差异区域的数量,累积差异。
示例:2 个文件 A 和 B。它们有 2 个差异区域,它们的累积差异为 6c-a3 + 6c-11 + 6f-6e + 20-22。
File A = 48 65 6c 6c 6f 2c 20 57
File B = 48 65 a3 11 6e 2c 22 57
|--------| |--|
reg 1 reg 2
如何使用标准 GNU 工具和 Bash 获取此类信息,或者我应该更好地使用简单的 Python 脚本?关于 2 个文件有何不同的其他统计信息也很有用,但我不知道还有什么以及如何衡量?熵差?方差差异?
【问题讨论】:
-
你在 linux 中已有的
cmp程序有什么问题? en.wikipedia.org/wiki/Cmp_(Unix)。另外,如果文件大小不同(或比较的区域大小不同),结果如何? -
您对“累积差异”的定义意味着
00 ff和ff 00之间的累积差异为0。这是故意的吗? -
作为更一般的说明:如果不指定目的,要求其他“差异措施”是毫无意义的。您可以将这两个文件视为(字节)向量并使用任何有限维向量范数。
-
@sven 1. 这取决于,有时我需要它。但你总是可以只用 abs() 或平方差异 2.目的是对数量差异进行一些统计。
标签: python linux bash statistics hexdump