我已阅读并尝试了每个答案here,但它们似乎只适用于非二进制格式的字符串。我正在尝试比较二进制文件中的差异,并返回格式如下:
[file1]
-0001010: ac 0f 00 00 01 00 00 00 48 65 6c 6c 6f 2c 20 77 ........Hello, w
[file2]
+0001010: ac 0f 00 00 01 00 00 00 48 75 6c 6c 6f 2c 20 77 ........Hullo, w
xdiff
可以很好地创建bdiff补丁和修补文件 - 我看起来也说明了差异。
$one = 'one'; // original file
$two = 'two'; // updated file
$pat = 'dif'; // bdiff patch
$new = 'new'; // new destfile
xdiff_file_diff_binary($one, $two, $pat);
xdiff_file_patch_binary($one, $pat, $new);
$diff = xdiff_file_diff($one, $two, 1);
if (is_file($diff)) {
echo "Differences:\n"; // result = 1
echo $diff;
}
也许xdiff
不是正确的扩展名吗?我不确定。
答案 0 :(得分:0)
听起来像PHP中的屁股一样巨大的痛苦,我可以建议以下bash单行吗?
diff <(hexdump -C file1) <(hexdump -C file2)
输出:
10c10
< 00000090 35 35 61 34 32 62 62 31 30 33 31 62 38 38 39 34 |55a42bb1031b8894|
---
> 00000090 35 35 61 34 32 62 62 31 30 33 31 61 38 38 39 34 |55a42bb1031a8894|
您可以随时查看diff
和hexdump
的选项。