Постоянные пользователи Vim наверняка слышали об утилите xxd. Она позволяет вывести дамп указанного файла. Выглядит это следующим образом:
$ xxd -l 64 db.sqlite3 0000000: 5351 4c69 7465 2066 6f72 6d61 7420 3300 SQLite format 3. 0000010: 0400 0101 0040 2020 0000 0013 0000 0024 .....@ .......$ 0000020: 0000 0000 0000 0000 0000 0017 0000 0004 ................ 0000030: 0000 0000 0000 0000 0000 0001 0000 0000 ................Параметр -l 64 указывает, что нужно вывести только первые 64 байта. Есть еще один любопытный параметр (-i), который позволяет сгенерировать код, и его можно сразу вставлять в C или C++ файл:
$ xxd -i -l 64 db.sqlite3 unsigned char db_sqlite3[] = { 0x53, 0x51, 0x4c, 0x69, 0x74, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x20, 0x33, 0x00, 0x04, 0x00, 0x01, 0x01, 0x00, 0x40, 0x20, 0x20, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00 }; unsigned int db_sqlite3_len = 64;Параметров для генерации кода для других языков не предусмотрено. Но это поправимо. Например, мне понадобилось вставить код в модульные тесты на Python 3. Помог в этом потоковый редактор sed:
$ xxd -l 64 -g 1 -u db.sqlite3 | sed -e 's/.\+: /b"\\x/g' -e 's/ .*/"/g' -e 's/ /\\x/g' b"\x53\x51\x4C\x69\x74\x65\x20\x66\x6F\x72\x6D\x61\x74\x20\x33\x00" b"\x04\x00\x01\x01\x00\x40\x20\x20\x00\x00\x00\x13\x00\x00\x00\x24" b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x04" b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00"И кстати, вскоре я поделюсь опытом как быстро начать писать программы на Python.
Книги по теме: