Утилиты для конвертации двоичных файлов в текст HEX дампа |
![]() |
Добавил(а) microsin |
В программировании часто встречается задача преобразовать содержимое какого-нибудь файла в содержимого массива констант. Например, у Вас есть графика картинки в виде файла BMP, и для его вывода на индикатор нужно получить массив примерно такого вида: const unsigned char __256x64_greyscale_4bit_bmp[] = { 0x42, 0x4d, 0x78, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, ... 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00 }; Задача вроде бы простая, но самому писать утилиту конвертации не хочется. Какие есть готовые программы, которые позволяют получить текстовый дамп двоичного файла? 1. bmptoc.exe. Примечание: все описываемые утилиты можно скачать в архиве по ссылке [1]. Обратное преобразование - из HEX-дампа в двоичный файл - позволяют делать утилиты hextools и xxd. [bmptoc.exe] Это простая утилита с открытым исходным кодом. Она предназначена для вывода HEX-дампа растра монохромных файлов BMP, вырезая заголовок (что удобно для создания знакогенераторов), и также может выводить HEX-дамп всего файла целиком (опция -noheader). При запуске без опций утилита выведет экран подсказки. Simple BMP to dump converter utility. Usage: bmptoc.exe filename[.bmp] [outputfilename] [-raw] [-noheader] [-i] If outputfilename omitted, dump filename[.bmp] to console. -raw option mean no cut additional line aligment bytes. -noheader simply convert source as binary file. -i inverse. Если имя входного файла опущено, то HEX-дамп будет выведен в окно консоли. Опция -raw оставляет в HEX-дампе завершающие нулевые байты выравнивания файла BMP (эти байты не несут никакой полезной информации, они нужны только для подгонки размера файла формата BMP под кратность 4 байтам). Опция -noheader отключает анализ заголовка файла BMP, при этом в HEX-дамп попадут все байты вместе с заголовком (эта опция позволяет конвертировать в HEX-дамп любые файлы, не только файлы BMP). Опция -i инвертирует монохромную графику при выводе в HEX-дамп. [bin2C] Эта утилита удобна тем, что позволяет сразу получить и модуль на языке C, и заголовок к нему. В модуле будет сформирован обычный массив из данных входного файла. При запуске без опций утилита выведет экран подсказки. Bin2C.exe (c) 2002 - 2015 SEGGER Microcontroller --- www.segger.com Usage: Bin2C < infile > < outfile > where < infile > is the input binary (or text) file (with extension) and < outfile > is the name (without extension) of the .c and .h files to create . Example: Bin2C index.html index Press any key to exit... Для конвертации нужно обязательно указать и имя входного, и имя выходного файла (без расширения). Пример: Bin2C.exe 256x64-greyscale-4bit.bmp 256x64-greyscale-4bit В результате будет сформировано 2 файла - файл модуля с именем выходного файла и расширением *.c, и файл заголовка с расширением *.h. Имя для массива будет автоматически сгенерировано из имени входного файла. [hextools] В пакет утилит hextools (они с открытым исходным кодом) входят 2 программы: hexdump.exe и hex2bin.exe. Первая позволяет получить HEX-дамп файла, а вторая позволяет получить обратное преобразование. [xxd] Эта утилита пришла из мира xNix (см. man xxd). Есть порт на Windows [1]. Подсказку по опциям можно получить командой xxd -h. c:\temp>xxd -h Usage: xxd [options] [infile [outfile]] or xxd -r [-s [-]offset] [-c cols] [-ps] [infile [outfile]] Options: -a toggle autoskip: A single '*' replaces nul-lines. Default off. -b binary digit dump (incompatible with -ps,-i,-r). Default hex. -c cols format < cols > octets per line. Default 16 (-i: 12, -ps: 30). -E show characters in EBCDIC. Default ASCII. -g number of octets per group in normal output. Default 2. -h print this summary. -i output in C include file style. -l len stop after < len > octets. -ps output in postscript plain hexdump style. -r reverse operation: convert (or patch) hexdump into binary. -r -s off revert with < off > added to file positions found in hexdump. -s [+][-]seek start at < seek > bytes abs. (or +: rel.) infile offset. -u use upper case hex letters. -v show version: "xxd V1.10 27oct98 by Juergen Weigert (Win32)". Пример командной строки для получения HEX-дампа (в результате получится текстовый файл 256x64-greyscale-4bit.txt): xxd 256x64-greyscale-4bit.bmp >256x64-greyscale-4bit.txt Пример командной строки для обратного преобразования (из HEX-дампа будет получен двоичный файл): xxd -r 256x64-greyscale-4bit.txt 256x64-greyscale-4bit.bmp Подробную документацию по использованию xxd см. в статье [3]. [Ссылки] 1. 151212bin2c-utils.zip. |