Vim 有一个内置的 diff 工具,可以比较任意数量的文件。它也可以在 Windows 上运行。你可以在http://vim.org找到它。
Windows 的 vim 标准安装包括xxd
,它允许您将二进制文件视为文本:
因此,例如,如果您尝试:
xxd xxd.exe
你会得到:
0000000: 4d5a 9000 0300 0000 0400 0000 ffff 0000 MZ..............
0000010: b800 0000 0000 0000 4000 0000 0000 0000 ........@.......
0000020: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0000030: 0000 0000 0000 0000 0000 0000 d800 0000 ................
0000040: 0e1f ba0e 00b4 09cd 21b8 014c cd21 5468 ........!..L.!Th
0000050: 6973 2070 726f 6772 616d 2063 616e 6e6f is program canno
0000060: 7420 6265 2072 756e 2069 6e20 444f 5320 t be run in DOS
0000070: 6d6f 6465 2e0d 0d0a 2400 0000 0000 0000 mode....$.......
0000080: 6ba7 bec3 2fc6 d090 2fc6 d090 2fc6 d090 k.../.../.../...
ETC...
因此,您可以使用xxd
将二进制文件转储到文本文件中:
xxd orig > orig.txt
xxd mod1 > mod1.txt
xxd mod2 > mod2.txt
然后在 diff 模式下运行 vim:
vim -d orig mod1 mod2
这会给你这样的东西:
![三路 vimdiff 示例](https://i.stack.imgur.com/1aDEW.png)
(这个截图是从这里截取的,只不过是 VIM 中 3-way diff 的一个说明)
所有这些工具都可以在 Windows 中使用,因此它们应该可以解决您的问题。
编辑:
合并结果后xxd
,您可以使用以下命令将十六进制转储转换为二进制文件xxd -r
:
xxd -r merged_xxd_file merged_binary_file
您可以在的手册页中查看更多详细信息和选项xxd