見出し画像

バイナリデータをソースファイルに取り込む

コード書いとる?

バイナリデータをC言語のソースファイルからインクルードしたいのだが...という時に便利な手法を見つけたのでメモ書き。ここはnote

動機

何を言っているんだ?と思いますが、なんつーか、わざわざファイル読み込み処理やらなんやらかんやら実装したくない状況ってあるじゃないですかー。メモリ効率とか無視してとりあえず動いて欲しいので直接ソースファイルにchar配列で記述したい時もあるんですよ!刹那的プログラミング!!

xxdコマンド

調べてみたらありました!xxdコマンド!Linux向けのコマンドですがmacOSにもありました!Windowsの人は...こことか参考にするといいかもしれない

使い方は...ターミナルにて

xxd -i path-to-file

で標準出力に実行結果が出力されますので後はご自身の望むままに!

出力は例えばこんな感じ。これは2x2で白で塗り潰されたpng画像!

unsigned char test_png[] = {
  0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
  0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02,
  0x08, 0x02, 0x00, 0x00, 0x00, 0xfd, 0xd4, 0x9a, 0x73, 0x00, 0x00, 0x00,
  0x0d, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0x63, 0xf8, 0x0f, 0x06, 0x50,
  0x0a, 0x00, 0x53, 0xba, 0x0b, 0xf5, 0x7a, 0xec, 0x08, 0x9f, 0x00, 0x00,
  0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
};
unsigned int test_png_len = 70;

スッキリ!


この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?