C
hexdump
Binary

画像などのバイナリファイルを uint8_t(1バイト符号なし整数形式)配列としてソースコードに埋め込む

はじめに

ファイルシステムがない環境でのデバッグやライブラリに画像ファイルを埋め込見たい場合など・・・バイナリファイルをソースコードに組み込みたくなるケースが多々あります。

ソースコードへ組み込むには単純に対象ファイルを uint8_t 配列へ変換するだけで良いのですが、そのたびに変換方法を調べているので備忘録として残します。

 コマンド

cat "file_path" | hexdump -v -e '8/1 "0x%02x, "' -e '"\n"' | sed -e 's/0x  ,//g' > data.txt

出力されたテキストファイルの中身をソースコードに貼り付けるなり、 下記のように配列の中で include してください。

#include <stdint.h>

uint8_t array[] = {
#include "data.txt";
};

手っ取り早く、出力結果を見たい場合にどうぞ。httpbin から jpeg ファイルを落としてきて uint8_t 配列にしています。

curl http://httpbin.org/image/jpeg | hexdump -v -e '8/1 "0x%02x, "' -e '"\n"' | sed -e 's/0x  ,//g' > data.txt
cat data.txt

reference