16進数からASCIIテキストへの変換
16進数のバイト値を読みやすいASCIIテキストに変換する方法を学びます。16進数と文字のマッピング表を理解し、hexダンプをステップバイステップでデコードしましょう。
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の変換:
- 最初のhexペア:
48。10進数に変換: 4 x 16 + 8 = 72。ASCII 72 = H。 - 次のペア:
65。変換: 6 x 16 + 5 = 101。ASCII 101 = e。 - 次のペア:
6C。変換: 6 x 16 + 12 = 108。ASCII 108 = l。 - 残りのペアも同様に繰り返す:
6C= l、6F= o。 - 結果: 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進数形式で表示される組み込みシステムでのデータデコードに不可欠です。