Получаем разницу между бинарными файлами при помощи vcdiff
Понадобилось мне это для того чтобы понять в каком месте и как файл JPEG испорчен в процессе передачи.
VCDIFF — формат и алгоритм для дельта кодирования. Описан в RFC 3284.
Дельта-кодирование (англ. Delta encoding) — способ представления данных в виде разницы (дельты) между последовательными данными вместо самих данных.
Для примера я использую текстовые файлы в кодировке Windows-1251 для наглядности. Но с таким же успехом это могут быть и бинарные файлы.
Исходники:
"копия текст копия" ( source.txt )
"копия изменения копия" ( target.txt )Нужно получить разницу между файлами:
" изменения " ( source.txt -> target.txt )
" текст " ( target.txt -> source.txt )Я пользуюсь программой xdelta3 но думаю подойдёт любая которая работает с форматом vcdiff.
Как получить
Нам понадобится ещё один файл заполненный пробелами:
" " ( spaces.txt )Он должен быть больше или равен по размеру файлу источнику ( source.txt )
Команда:
xdelta3 -e -A -n -s source.txt target.txt | xdelta3 -d -s spaces.txtРезультат:
изменения Использованные флаги:
-e — создание дельты
-A — убирает лишние заголовки
-n — убирает crc (он не даёт применить дельту с другим источником)
-s [файл] — источник с которым сравнивается целевой файл и восстанавливается
-d — получение целевого файла из дельты и источника











По статистике 1-4 % населения Земли подвержены дефекту речи, характеризующимся частой пролонгацией звуков (слогов, слов) и/или частыми остановками в речи, нарушающими ритмическое ее течение. В простонародье этот феномен известен как заикание.
