Как создать файл PATCH для выходного файла двоичной разницы - PullRequest
9 голосов
/ 10 марта 2010

Я хочу знать, как создать PATCH для файла различий, который я получил, сравнивая два двоичных файла. $ cmp -l> имя выходного файла

Я проверил текстовые файлы 'diff' может быть использован для сравнения и создания файла PATCH $ diff -u oldFile newFile> mods.diff # -u заставляет diff выводить унифицированный формат diff

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

Ответы [ 4 ]

6 голосов
/ 16 марта 2010

Diff и Patch предназначены для работы с текстовыми файлами, а не с произвольными двоичными данными. Вместо этого вы должны использовать что-то вроде bsdiff .

2 голосов
/ 05 июня 2014

JDIFF - это программа, которая выводит различия между двумя (двоичными) файлами.
Также вы можете использовать команду rdiff.

0 голосов
/ 07 мая 2018

Если ваш репозиторий или пакет использует git , вы можете сделать бинарный diff с помощью git diff --patch --binary old_dir patched_dir Конечно, вы также можете использовать его с коммитами git diff --patch --binary commit1 commit2

0 голосов
/ 05 марта 2015

Если вы все еще хотите использовать diff & patch. Вот способ ... Напишите программу на c, чтобы вставлять символ новой строки в конце каждых 512/1024 / байтов your_choice (это просто чтобы обмануть diff, поскольку он сравнивает файлы построчно). Запустите этот скрипт для двух ваших входных файлов.

Затем запустите 'diff -au file1 file2> mod.diff (вы получите патч здесь)'

Patching это просто 'patch

Затем снова напишите программу для удаления новых строк из двоичного файла. Вот и все ...

...