xxd
Как сравнить два бинарных файла
К сожалению я не знаю нормального способа визуального сравнения двух бинарных файлов (что бы нормально отображалось "выпадение байта").
Тем неменее имея zsh и vim, сравнить по быстрому два бинарных файла можно так
$ vim -d =(xxd -g 1 файл1) =(xxd -g 1 файл2)Объяснения:
- vim -d - diff режим vim-а, он же запускается командой vimdiff
- =(xxd -g 1 файл1) - это конструкция zsh, запускает команду внутри =(), сохраняет вывод этой команды во временный файл, и подставляет его имя вместо этой конструкции.
Линки в тему:
- Как съесть один пирог дважды: bash, tee, process substitution
- Нелинейные конвейеры
- Чем отличаются уровни оптимизации -O в gcc?
как загнать бинарные данные в исходник
$ xxd -i binary_file > binary_header.hпоместит в файл binary_header.h дамп файла binary_file в виде:
unsigned char binary_file[] = { 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x08, 0x06, 0x00, 0x00, 0x00, 0x1f, 0xf3, 0xff, 0x61, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, 0x44, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xa0, 0xbd, 0xa7, 0x93, 0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, 0x07, /* ........... */ }; unsigned int binary_file_len = 340;
xxd является частью пакета vim
(3 голоса)

