16進数からASCIIテキストへの変換

16進数のバイト値を読みやすいASCIIテキストに変換する方法を学びます。16進数と文字のマッピング表を理解し、hexダンプをステップバイステップでデコードしましょう。

Conversion

Hex

48 65 6C 6C 6F 20 57 6F 72 6C 64

ASCII

Hello World

詳細な説明

16進数からASCIIへの変換は、hexバイト値を対応する人間が読める文字に変換するプロセスです。すべての印字可能なASCII文字は、20(スペース)から7E(チルダ)の範囲の特定のhex値にマッピングされます。このマッピングの理解は、hexエディタ、ネットワークパケット解析、低レベルデバッグに不可欠です。

変換の仕組み:

16進数の各ペアは、0から255(hexでは00からFF)の値を持つ1バイト(8ビット)を表します。ASCII規格は、バイト値32から126に印字可能な文字を割り当てています。例えば、hex値48は10進数の72に等しく、大文字のHに対応します。値65は10進数の101で、小文字のeにマッピングされます。

ステップバイステップの例 — 48 65 6C 6C 6Fの変換:

  1. 最初のhexペア: 48。10進数に変換: 4 x 16 + 8 = 72。ASCII 72 = H
  2. 次のペア: 65。変換: 6 x 16 + 5 = 101。ASCII 101 = e
  3. 次のペア: 6C。変換: 6 x 16 + 12 = 108。ASCII 108 = l
  4. 残りのペアも同様に繰り返す: 6C = l6F = o
  5. 結果: Hello

覚えておくべき一般的なhex-ASCII値:

Hex 10進数 文字
20 32 スペース
30-39 48-57 0-9
41-5A 65-90 A-Z
61-7A 97-122 a-z
0A 10 改行(LF)
0D 13 キャリッジリターン(CR)

非印字文字:

20(10進数32)未満のバイトは制御文字であり、可視テキストとして表示されません。hexエディタでは通常、ASCIIカラムにドット(.)として表示されます。拡張ASCII(値80-FF)は使用されるエンコーディングによって異なります。ISO-8859-1ではアクセント付きのヨーロッパ文字にマッピングされ、他のコードページでは異なるグリフを表します。

実用的なヒント:

hexダンプを読む際、右側のASCIIカラムはデータの素早い視覚的要約を提供します。テキストコンテンツ(HTTPヘッダー、ファイルパス、エラーメッセージなど)はすぐに認識でき、バイナリデータは散在するドットとして表示されます。このデュアルビューアプローチが、hexエディタをフォレンジック分析やリバースエンジニアリングにおいて強力にしている理由です。

ユースケース

hex-to-ASCII変換は、ネットワークパケットキャプチャの解析、hexエディタでのバイナリファイル内容の読み取り、値が16進数形式で表示される組み込みシステムでのデータデコードに不可欠です。

試してみる — Hex Editor

フルツールを開く