| Утилиты для конвертации двоичных файлов в текст 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. |