理系学生日記

おまえはいつまで学生気分なのか

コマンドラインでの16進数変換

バイナリを hex encoded で表現するというケースが最近増えてきて、たとえば CBC の初期ベクトルを hex encoded で表現するとか、鍵を hex encoded で表現するとか。 16 進数というと hexdump があって、たとえば 0aA は 16 進数で表現すると 306141 になるというのは次のコマンドで分かる。

$ echo -n 0aA | hexdump -C
00000000  30 61 41                                          |0aA|

最近知ったのは、これを od コマンドでもできるという点で、同様のことであれば以下のようにも表現できる。

$ echo -n 0aA | od -t x1
0000000 30 61 41

od コマンドの -t オプションは、その出力フォーマットを定義するオプションで、x は 16 進数を、その次の 1 はバイト数を表現する。 たとえば -t x2 とでもしてやると、リトルエンディアンの PC であれば以下のように 16 進数が逆転する。

$ echo -n 0aA | od -t x2
0000000 6130 0041