Hex およびバイナリビューアーガイド:生データの読み方
テキストエディタでファイルを開いたときに、文字化けした文字や奇妙な記号の羅列が表示されたことはありませんか? それは、テキストエディタがデータを(UTF-8 などの)符号化された文字として解釈するように設計されているためです。ファイルの中に 実際 に何が入っているかを確認するには、16進数ビューアー (Hex Viewer) または 16進数エディター (Hex Editor) が必要です。
1. 16進数 (Hex) 表記とは何か?
16進数は、16を底とする記数法です。0~9 と A~F(A=10、F=15)の 16 個の記号を使用します。
- なぜ16進数を使うのか? 1バイトのデータ(8ビット)は 256 通りの値を表現できます。10進数では 0 から 255、2進数では
00000000から11111111ですが、16進数ではちょうど 2 文字の00からFFで表現できます。これにより、16進数はバイナリデータをコンパクトに表現するのに最適です。
2. 16進数ビューアーでのバイナリデータの読み方
標準的な16進数ビューアーのレイアウトは、通常 3 つの列で構成されています。
- オフセット (Offset): ファイルの先頭からのメモリ番地またはバイト位置。
- ヘキサダンプ (Hex Dump): 16進数のペア(例:
48 65 6c 6c 6f)で表現された実際のデータ。 - ASCII/ANSI 翻訳: それらの16進数値のテキスト表現(例:
Hello)。表示可能な文字でない場合は、通常ドット (.) として表示されます。
3. 16進数ビューアー vs. テキストエディタ
- テキストエディタ: すべてのバイトを文字セットにマッピングしようとします。
00があると何も表示されなかったり、動作が不安定になったりすることがあります。バイナリデータの場合、エンコーディングを「修正」しようとして、保存時にファイルが破損する可能性があります。 - 16進数ビューアー: 生の、リテラルなバイトを表示します。エンコーディングは気にしません。画像、実行ファイル、圧縮アーカイブなどの非テキストファイルを検査する唯一の安全な方法です。
4. 16進編集の一般的なユースケース
- デバッグ: プログラムの出力を検査し、ファイルに書き込まれたりネットワーク経由で送信されたりした正確なバイトを確認します。
- リバースエンジニアリング: パターンや「マジックナンバー (Magic Numbers)」を探して、未知のファイル形式を分析します。
- ファイル修復: 破損したファイルヘッダーを手動で修正して、再び読み取れるようにします。
- ゲーム改造: 16進データの特定の値を変更することで、ゲームのセーブファイルを改造します。
5. オンライン16進エディターの使い方
Tool3M のバイナリツール のようなオンライン16進エディターを使用すると、重いソフトウェアをインストールせずにファイルを検査できます。
- ファイルをアップロード/ドラッグ: ファイルをブラウザに読み込みます(プライバシー保護のため、ローカルで処理され、サーバーにはアップロードされません)。
- ナビゲート: ヘキサダンプをスクロールしたり、特定の16進シーケンスを検索したりします。
- 編集 (オプション): 特定のバイトを変更し、修正されたバージョンをダウンロードします。
よくある質問 (FAQ)
Q: 「マジックナンバー (Magic Numbers)」とは何ですか?
A: マジックナンバーとは、その形式を識別するためのファイルの最初の数バイトのことです。例えば、PNG ファイルは常に 89 50 4E 47 で始まり、PDF は 25 50 44 46 で始まります。
Q: エンディアン(ビッグエンディアン vs. リトルエンディアン)とは何ですか?
A: マルチバイトの数値がメモリに保存される順序のことです。ビッグエンディアンは最上位バイトを最初に保存し、リトルエンディアン(Intel/AMD プロセッサで一般的)は最下位バイトを最初に保存します。
Q: 16進エディターでファイルを編集するのは安全ですか?
A: 何をしているのかを正確に理解している場合に限ります! 実行ファイルやデータベースファイルの 1 バイトを変更しただけで、完全に動作しなくなる可能性があります。常に元のファイルのバックアップを取っておいてください。