16進を文字列化したのをバイナリに、バイナリを16進文字列に変換する・xxd

16進の値が文字列になっているのをバイナリに戻したり、バイナリを16進にするxxdというコマンドを紹介します。
以下の変換になります。

48656C6C6F0A → Hello
Hello → 48656C6C6F0A

関連記事

16 進ダンプを作成したり、元に戻したり。 xxd

xxdコマンドのmanを見ると以下のマニュアルが表示されます。

XXD(1)                               General Commands Manual                               XXD(1)

名前
       xxd - 16 進ダンプを作成したり、元に戻したり。

書式
       xxd -h[elp]
       xxd [options] [infile [outfile]]
       xxd -r[evert] [options] [infile [outfile]]

一番最初に書いた Hello 文字列を16進文字列に変換し、変換した16進文字列をHelloに戻してみます。

$ echo Hello | xxd -p
48656c6c6f0a
$ echo Hello | xxd -p | tr a-f A-F
48656C6C6F0A
$ echo 48656c6c6f0a | xxd -r -p
Hello
$ echo 48656C6C6F0A | xxd -r -p
Hello

上記の動作例は、Helloというデータを16進の文字列に変換しています。
変換した16進文字列をさらにxxdコマンドを使って元のHelloに戻しています。

Helloとう文字列をバイナリで見ると以下のようになります。
(最後の0aは改行です。)

$ echo Hello | hexdump -C
00000000  48 65 6c 6c 6f 0a             |Hello.|

意図した変換がされているのが確認できます。

xxdコマンド使用例

xxdコマンドの使用例を以下に記します。
使用するxxdコマンドのオプションは以下の2つです。

-p | -ps | -postscript | -plain
       ポストスクリプト形式の 16 進ダンプを出力する。別名 プレーン 16 進ダンプ。

-r | -revert
       元に戻す: 16 進ダンプからバイナリ形式に変換 (またはパッチ) します。  ファイルへ出力
       する場合、出力先のファイルは切り詰めされません。   行番号や特定の書式がないプレーン
       16 進ダンプを読み込む場合は、 -r -p を指定してください。空白と改行は無視されます。

リトルエンディアンなどに対応したオプションもありますので、必要な場合はman xxdをして確認して見てください。

バイナリから16進数文字列

以下はバイナリから16進数文字列に変換するコマンド例です。

ファイルを対象にする場合は、以下のようになります。

以上、バイナリを16進数の文字列に変換、またその逆の文字列化された16進数をバイナリに変換するxxdコマンドの紹介でした。



トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS