ファイルのバイナリモードで読み込んで16進でダンプするだけのプログラム
全然関係ないけど、ヘックスダンプって響きがかっこいい。
「今朝はシャワー浴びてからヘックスダンプした」って言ったら多分モテる。
さて、ファイルの中身をヘックスダンプするC言語プログラムを書きました。
Linuxでなら、
1 |
od -Ad -tx1 -v <file name> |
とかで可能なことですが、色々とあって今回必要になったので、せっかく書いたついでに紹介しておきます。
余談ですが、ダンプって吐き出すとかって意味なんですね。
ファイルのバイナリデータを16進に変換して吐き出してるのがヘックスダンプってやつです。(ヘックスが16進を表すのは言うまでもなく)
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
int binary_print(char *file_name) { FILE *file = fopen(file_name, "rb"); // ファイル存在確認 if (file == NULL) { printf("指定されたファイルは存在しません\n"); exit(EXIT_FAILURE); } int binary = 0; int cnt = 0; // 表示 while (1) { if (cnt % 16 == 0) printf("\n%06d ", cnt); binary = getc(file); if (binary == -1) break; printf("%02x ", binary); cnt++; } printf("\n"); return 0; } |
解説
引数にはファイルのパスを入力してください。
fopenでオプションは”rb”(多分Read Binary)で読み込んでください。
基本的にwhile文で回しダンプします。
16byte吐き出すごとに先頭が何byte目かも表示します。
特に凝ったことはしてないので、気になることがあればTwitterででも聞いてみてください。
今回のブログ曲
今回投稿中に聴いていた曲はこちら