文字コードについて調べていて、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 件のコメント:
コメントを投稿