Инструмент для трехстороннего двоичного (шестнадцатеричного) сравнения файлов?

StackOverflow https://stackoverflow.com/questions/4559677

Вопрос

У меня есть набор файлов двоичной конфигурации с тремя версиями в каждой-оригинал и две по-разному модифицированные версии каждого файла. Мне нужно видеть различия между двумя версиями, а также оригинал, все это одновременно.

Что мне нужно, так это трехсторонний инструмент DIFF для двоичных файлов. Через довольно утомительный поиск в Google, я в конце концов наткнулся на Скриншот приложения, которое делает именно то, что мне нужно - к сожалению, в сообщении на форуме, содержащем изображение, не упоминается, какое приложение они используют:

http://www.xboxhacker.org/index.php?topic=15032.0

Может ли кто-нибудь указать мне в направлении приложения (Windows), которое обеспечивает сравнение бинарного безопасного (HEX) трех двоичных файлов ??

Это было полезно?

Решение

Скриншот от Araxis Merge. Анкет Их Pro Edition ($ 270) поддерживает трехсторонние сравнения.

Другие советы

VIM имеет встроенный инструмент DIFF, который может сравнить произвольное количество файлов. Он также работает в Windows. Вы можете найти это в http://vim.org.

Стандартная установка Vim для Windows включает 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.../.../.../...

так далее...

Итак, вы можете использовать xxd Чтобы сбросить ваши двоичные файлы в текстовые файлы:

xxd orig > orig.txt
xxd mod1 > mod1.txt 
xxd mod2 > mod2.txt

А затем запустите Vim в режиме Diff:

vim -d orig mod1 mod2

И это даст вам что -то вроде этого:

example of 3-way vimdiff

(Этот скриншот был сделан из здесь и не более чем иллюстрация того, как будет выглядеть трехсторонняя дифференциация в VIM)

Все эти инструменты доступны в Windows, поэтому они должны решить вашу проблему.

Редактировать:

После того, как вы объедините результаты xxd, вы можете преобразовать шестнадцатеричный дамп в двоичный файл, используя xxd -r:

xxd -r merged_xxd_file merged_binary_file

Вы можете увидеть более подробную информацию и параметры в xxdСтавка

Вы могли бы взглянуть на Ecmerge (Инструмент, над которым я работаю), он имеет 2 и трехсторонний различий двоичных файлов (HEX + ASCII). Там нет функции слияния. Вы можете перейти из измененной области в зону смены и компактные длинные зоны (длинные вставки, изменения или неизменные).

Последняя версия Вне всякого сравнения кажется, поддерживает Трехсторонний дифференциал и слияние. Анкет Более того, это Список функций говорит, что поддерживает сравнение двоичных файлов.

Обратите внимание, что это не бесплатное программное обеспечение :-)

Я недавно познакомился с P4merge, что, по -видимому, также поддерживает двоичные файлы.

Он принимает 3 файла в качестве ввода: исходные и два производных. Он показывает их бок о бок, с четвертым окном, которое показывает объединенный файл, с возможностями редактирования и разрешением конфликтов.

Я просто использовал это, чтобы объединить две ветви большой кодовой базы, и это было чрезвычайно удобно.

p4merge example

Теперь я не использовал его для объединения двоичных файлов, но он поддерживает разнообразные картинки, поэтому я был бы удивлен, если бы двоичные файлы не были поддержаны.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top