2022/08/12

Hexダンプのやり方に関するメモ

文字コードについて調べていて、Hexダンプのやり方を気をつけないと、表記がビッグエンディアンなのか、リトルエンディアンなのか、わからなくなるのでメモ。

xxd(Vim付属)、hexdump、odあたりのコマンドが使われると思うので、その3つについて。


xxd(おすすめのオプション: xxd -u -g1)

オプション指定なしで実行すると、ビッグエンディアン(上位バイトが左に来る)で出力してくれるようだ。気をつけないといけないのは、ファイルを2個指定した場合、2個目のファイルに1個目のファイルの変換結果で上書きされてしまう。

-uオプションで、出力を大文字にしてくれる。

-g1オプションを付けることで、1バイトずつ読み込んでくれるので、エンディアンを気にしなくて良い。

$ echo "123456ABC" | xxd -u -g1
00000000: 31 32 33 34 35 36 41 42 43 0A                    123456ABC.


hexdump(おすすめのオプション: hexdump -C)

そのまま実行すると、2バイト毎に読み込み、実行環境のエンディアンで表示するため、Cygwin環境だとリトルエンディアン(上位バイトが右に来る)になってしまう。

$ echo "123456ABC" | hexdump
0000000 3231 3433 3635 4241 0a43
000000a

そのため、-Cオプションを付けて1バイト毎に読み込んでもらうようにする。-Cはついでにアスキー表示も付けてくれる

$ echo "123456ABC" | hexdump -C
00000000  31 32 33 34 35 36 41 42  43 0a                    |123456ABC.|
0000000a


od(おすすめのオプション: od -t x1)

-tオプションで書式を指定。x1は、16進(x)で1バイトずつ表示の意味

$ echo "123456ABC" | od -t x1
0000000 31 32 33 34 35 36 41 42 43 0a
0000012


 

0 件のコメント:

コメントを投稿