通常,为了找到两个二进制文件有何不同,我使用diff和hexdump工具。但是在某些情况下,如果给出两个相同大小的大型二进制文件,我只希望看到它们的数量差异,例如差异区域的数量,累积差异。

示例:2个文件A和B。它们具有2个差异区域,其累积差为 6c-a3 + 6c-11 + 6f-6e + 20-22。 通用标签

如何使用标准的GNU工具和Bash获取此类信息,还是最好使用简单的Python脚本?关于2个文件的不同之处的其他统计信息也可能有用,但是我不知道还有哪些内容以及如何衡量?熵差?方差差异?

有帮助吗?

解决方案

对于除区域以外的所有内容,您都可以使用 numpy 。像这样(未经测试): 通用标签

我找不到用于计算区域的numpy函数,但是只是使用a != b作为输入来编写自己的函数,这并不难。请参阅问题灵感。

其他提示

一种想到的方法是对二进制差异算法有所了解。例如。 rsync算法的python实现。从此开始,应该可以相对轻松地获得文件不同的块范围的列表,然后对这些块进行任何统计。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top