Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Алгоритм сравнения бинарных файлов

Ответить
Настройки темы
Алгоритм сравнения бинарных файлов

Аватара для Savant

Старожил


Сообщения: 300
Благодарности: 6

Профиль | Сайт | Отправить PM | Цитировать


Если честно, то я не знаю как это правильно называется, поэтому поясню на примере.

Файл 1 - исходный:
Код: Выделить весь код
aaabbbcccddd
eeeeeeeeefff
Файл 2 - конечный:
Код: Выделить весь код
abababcdcdcd
eeeeefffe
После прогона программы генерируется "отчет" об отличиях (по сути же скриптовые команды), например:
Код: Выделить весь код
Position 2, rewrite : baba
Position 8, rewrite : dcdc
Position 20, rewrite : fff
Position 24, delete : 3
Этот "отчет" прилепляется (как ресурс) к маленькому модулю-патчеру, который понимает его формат и может производить те же операции с исходными файлами, "превращая" их в "конечные". Так вот, разыскивается подобный алгоритм или его прототип. Основная проблема в том, что сравниваться будут не текстовые, а чаще исполняемые файлы.

Предполагаю, что найденные мною подобные алгоритмы для текстовых файлов не подойдут для бинарных (пока не пробовал). Зато попытался написать свой алгоритм, кстати не очень успешно - часто где-то зацикливается и умеет применять только 3 команды (заменить, вставить, удалить), хотелось бы иметь еще переместить, копировать, заполнить последовательность и т.д.

Жду комментариев по проблеме.

Отправлено: 20:11, 03-05-2005

 

редкий гость


Сообщения: 1696
Благодарности: 44

Профиль | Сайт | Отправить PM | Цитировать


Кстати хорошая была бы олимпиадная задачка... Сделать генератор минимальных дифов. Тут можно много где проявиться...

Насколько я понимаю, теория лежащая в основе таких патчей будет та же самая, что и для текстовых патчеров (diff/patch). но т.к. я этой теории не знаю, то буду молчать

Вот что нашлось гуглом: http://www.xmailserver.org/xdiff-lib.html . Не знаю как оно работает, лень разбираться. Там же лежат две какие-то бумаги на эту тему, не смотрел.

-------
http://ivank.ru


Отправлено: 21:54, 03-05-2005 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для Savant

Старожил


Сообщения: 300
Благодарности: 6

Профиль | Сайт | Отправить PM | Цитировать


ivank
Спасибо за ссылку, но гораздо больше ты мне помог тем, что подсказал правильный поисковый запрос для гугля. Итог - найден виндовый порт утилиты bsdiff/bspatch: http://sites.inka.de/tesla/download/...-win32-src.zip (щас разбираемся, что к чему; к сожалению почти отсутствуют комментарии к тексту программ)

Цитата http://www.daemonology.net/bsdiff/:
bsdiff and bspatch are tools for building and applying patches to binary files. By using suffix sorting (specifically, Larsson and Sadakane's qsufsort) and taking advantage of how executable files change, bsdiff routinely produces binary patches 50-80% smaller than those produced by Xdelta, and 15% smaller than those produced by .RTPatch (a $2750/seat commercial patch tool).

Отправлено: 09:57, 04-05-2005 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Алгоритм сравнения бинарных файлов

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Утилиты - [addon] FreeFileSync - бесплатная утилита для сравнения и синхронизации данных Habetdin Наборы обновлений для Windows XP/2003/Windows 7 25 22-11-2011 00:50
Редактирование бинарных файлов varaksino Программирование и базы данных 8 11-08-2011 23:01
Программа для поточечного сравнения изображений ShaRP Программное обеспечение Windows 6 14-02-2008 08:51
Алгоритм запуска ПО p13rr0t Хочу все знать 2 11-05-2007 22:00
Алгоритм pauluss Программирование и базы данных 1 06-10-2006 10:53




 
Переход