xxd:16進ダンプと逆変換が可能な便利ツール

xxd

xxdコマンドの概要と基本的な使い方

Linux環境でバイナリファイルの中身を確認する場合、 hexdumpod などのコマンドが利用されます。

その中でも特に扱いやすく、 さらに逆変換(hex → バイナリ)まで可能なのが xxd コマンドです。

xxd はもともと Vim に付属するツールですが、 現在では単体コマンドとして広く利用されています。

本記事では、xxdコマンドの基本機能と、 実務でよく使うオプションを整理します。

xxdとは何か

xxd は、 ファイルや標準入力の内容を 16進数(hex)形式で表示するコマンドです。

最大の特徴は、

  • 見やすい16進ダンプ表示
  • 逆変換(hexから元のバイナリへ復元可能)

という2つの機能を持っている点です。

基本構文

$ xxd ファイル名

標準的な出力は以下の形式になります。

  • 左側:アドレス(16進)
  • 中央:16進データ
  • 右側:ASCII表示

基本的な表示例

ファイル作成:

$ echo "ABC" > test.txt

表示:

$ xxd test.txt

出力例:

00000000: 4142 430a                                ABC.

0x41 = A 0x42 = B 0x43 = C 0x0a = 改行(LF)

よく使うオプション

1. 1バイト単位で表示

$ xxd -g 1 test.txt

-g はグループサイズ指定です。 -g 1 で1バイト単位表示になります。

2. 表示バイト数を制限

$ xxd -l 64 test.txt

-l は表示バイト数指定です。

3. アドレス表示を無効化

$ xxd -p test.txt

-p はプレーン出力(連続した16進文字列)になります。

スクリプト処理やハッシュ計算時に便利です。

4. 標準入力から表示

$ echo "Hello" | xxd




パイプ処理にも対応しています。

逆変換(hex → バイナリ)

xxd の最大の特徴は、 16進データから元のバイナリを復元できることです。

例:

$ xxd test.txt > dump.hex
$ xxd -r dump.hex restored.txt

-r は reverse(逆変換)を意味します。

これにより、 バイナリ編集やデータ修復が可能になります。

バイナリファイル確認

$ xxd /bin/ls | head

実行ファイルの先頭(ELFヘッダー)などを確認できます。

xxdの活用例

  • 文字コード確認
  • 改行コード確認
  • バイナリ解析
  • ネットワークデータ解析
  • ファイル破損調査
  • バイナリ修復

hexdump・odとの違い

  • od: 出力形式が柔軟
  • hexdump: 標準的で見やすい形式
  • xxd: 見やすい+逆変換可能

実務では、

  • 簡単に確認 → xxd
  • 詳細なフォーマット制御 → od
  • 標準的な表示 → hexdump -C

と使い分けるのが一般的です。

まとめ

xxdコマンドは、 16進表示と逆変換が可能な便利ツールです。

バイナリ解析や文字コード確認など、 トラブルシューティングで非常に役立ちます。

Linuxの基礎コマンドとして、 od・hexdumpとあわせて理解しておくと データ構造の理解が深まります。