文件 / 二进制 / 压缩

二进制文件对比精确定位两个文件不一样的字节偏移

选好文件 A 和文件 B,点击对比即可看到两者之间每一处字节差异。

二进制文件对比

文件

文件 A

把文件拖到这里,或点击选择。

文件 B

把文件拖到这里,或点击选择。

文件仅在浏览器本地比较,不会被上传。

差异

更换文件后需要重新对比才能更新结果。

选择文件 A 和文件 B,然后点击对比。

校验和只能告诉你两个文件不一样,却说不出哪里不一样——重新编码过的资源文件、打过补丁的固件、同一个二进制文件的两次构建产物,都是这种情况。这个二进制文件对比工具在本地逐字节比较两个文件,把每一处差异按偏移和长度列出来,而不是只给一个“一致/不一致”的结论。

它不是文本 diff。发生插入或删除时,工具不会尝试重新对齐后面的字节——而是老老实实比较 A 文件第 N 字节和 B 文件第 N 字节,这和 cmp、多数十六进制对比工具的做法一致,也是在没有“行”这个概念的二进制格式上最可预测的做法。

为什么用这个二进制文件对比工具

不只告诉你“不一样”,还告诉你字节级别哪里不一样。

每处差异都有自己的偏移

差异块列表把每一处不同的区域标出偏移和长度,点击就能让十六进制视图直接跳过去,并自动带上前后各几个字节的上下文。

两个文件并排显示,其中一段高亮的字节范围标出了它的偏移。

长度不同会单独列成一块

文件 A 和文件 B 大小不一样时,较长文件多出的尾部会被单独标成一个差异块,而不是被混进最后一处内容差异里。

一个较短的文件和一个较长的文件,较长文件多出的尾部字节被单独标记成一块。

看懂对比结果,不漏掉任何一处

01

载入文件 A 和文件 B

把文件拖进任意一个槽位,或点击选择文件。交换 A / B 会直接互换两侧——如果已经算出结果,交换不需要重新计算;载入示例会给出一组长度相同但有几处内容不同、另一处长度不同的样本。

  • 单个文件最大 512 MiB,超出会在读取前直接拒绝。
02

点击对比

两个文件都选好后并不会自动开始对比,需要点击对比按钮或按 Ctrl/Cmd+Enter,避免大文件在你还没准备好时就开始跑。更换任意一个文件都会让上一次结果过期。

  • 差异块超过 20000 个会直接判定失败,而不是悄悄截断列表——这通常说明两个文件本来就不是同一类东西。
03

逐处查看差异

“仅看差异”只显示差异块列表;“浏览全部字节”可以像普通十六进制查看器一样翻页浏览整个文件。跳转到偏移可以直接输入十进制或 0x 开头的十六进制数字。

  • 复制片段、下载片段会导出选中差异块的实际字节(带一点上下文),是十六进制+ASCII 的文本格式。

这个对比工具能做什么

严格按字节偏移对齐比较

两个文件按相同的 1 MiB 分块读取,在相同偏移处逐字节比较——这是二进制文件比较最基础也最可预测的做法。差异块就是连续差异字节的游程,结果完全确定、可复现。

可以直接操作的差异块列表

每一处差异都带着偏移、长度和类型;选中某一块会让十六进制视图跳过去,同时可以把这一块导出成片段。

整体对比结果的报告

复制或下载一份纯文本报告,列出两个文件的大小、差异字节总数、差异块总数,以及每个差异块的偏移和长度。

两种浏览方式

仅看差异只在差异块之间跳转;浏览全部字节则按设定的每行字节数逐页翻看整个文件,像一个普通的十六进制查看器。

这个工具会做什么,不会做什么

不做插入/删除对齐
工具比较的是 A 文件第 N 字节和 B 文件第 N 字节,不会检测某处插入了一段字节再重新对齐后面的内容——这和 cmp、vbindiff 的策略一致。一处插入之后,后面所有偏移大概率都会被判定为不同,这是按偏移严格对齐比较下的预期行为,不是 bug。
单文件 512 MiB,单次对比最多 20000 个差异块
超过 512 MiB 的文件在读取前就会被拒绝。如果两个文件会产生超过 20000 个差异块,对比会直接失败而不是悄悄截断列表,因为这通常意味着两个文件本来就不太可比。
不是十六进制编辑器,也不识别文件类型
这里的字节只读,不提供原地编辑功能;从文件头判断文件格式是另一个工具的事。二进制文件对比只负责告诉你两个文件哪里不一样。
压缩或加密过的文件通常几乎全部不同
压缩和加密都会让输入哪怕只变一点点,输出也大范围改变,所以两个压缩文件常常整体显示成一个巨大的差异块。想看有意义的字节级差异,请比较解压或解密后的版本。

关于二进制文件对比的常见问题

有什么工具可以比对两个 BIN 文件的内容有什么不同?

这个二进制文件对比工具就是为这个场景做的:完全在浏览器本地运行,不需要安装 Beyond Compare、WinHex 这类桌面软件,也能在 Windows、macOS、Linux 上得到同样的结果。

两个 bin 文件大小不一样,怎么对比差异?

工具会先比较到较短文件的长度为止,较长文件多出的那部分会被单独标成“仅存在于 A”或“仅存在于 B”的差异块,不会和真正的内容差异混在一起。

像 Beyond Compare 这类工具做二进制比对时会自动对齐,这里也会吗?

不会。这个工具刻意选择严格按字节偏移比较,不做插入/删除后的自动重新对齐——这样结果完全确定、可复现,代价是插入点之后的内容会整体显示为差异,需要手动跳转到已知的插入区间之后重新查看。

常见的二进制对比工具还有哪些?

桌面端常见的有 Beyond Compare、WinHex、UltraEdit 自带的十六进制文件对比功能,命令行有 cmp 和 vbindiff。这个二进制对比工具的定位是同一件事的免安装网页版,额外提供差异块统计和可下载的报告。

有没有免费的在线二进制文件对比工具?

有,这个页面就是。选好两个文件、点击对比即可看到结果,比较过程全部在浏览器本地完成,不需要注册也不需要上传文件。

没找到答案?

现在就试试二进制文件对比

先载入内置示例,看看一处内容差异和一处长度差异分别是怎么呈现的,再用二进制文件对比处理自己的文件。

全部处理都在浏览器本地完成。