16進数エンコードのガイド:バイトを見るための表記
この文字列が実際に何を保存しているのかを知りたいとき、16進数は最も直接的な見方です。ただし表記方法の一つであり、保護ではありません。
バイト列に開くべきとき
同じ文が環境によって違って見える、API が文字を拒否する、設定値の末尾に見えない空白がある。どれも「見えている文字」と「保存されているバイト」が違うことが原因です。16進数にすると、空白は 20、改行は 0a、タブは 09 としてすぐに見分けられます。
プロトコル仕様との照合にも向きます。ヘッダが2バイト、フラグが1バイトといった定義は珍しくなく、文字列をバイト列にして1バイトずつ比べるほうが、原文を眺めるより確実です。
- 見えない文字の確認:空白 20、改行 0a、タブ 09
- 固定長ヘッダやプロトコルフィールドの照合
- 見た目が同じ2つの文字列の比較
- 文字が実際に何バイトかを確認
結果を読むときの3つの注意
1つ目、文字コードは UTF-8 です。英字は1バイト、常用の漢字は通常3バイト、絵文字は多くが4バイトになります。漢字が e4 b8 ad になるのは不具合ではなく、UTF-8 の定義どおりです。
2つ目、各バイトは必ず2桁です。間の空白は区切りで、データではありません。3つ目、0x は書き方の習慣で、貼り付けても省略しても構いませんが、内容として扱わないでください。大文字と小文字は同じ値です。
- 漢字は通常3バイト、絵文字は通常4バイト
- 2桁区切り、区切りは空白
- CRLF は 0d が増えるので改行コードをそろえてから比較
暗号ではなく、保存形式でもない
16進数に鍵はありません。誰でも1手で戻せるため、パスワードや API の URL を隠す用途には使えません。変わるのは可読性だけで、サイズは2倍になり、情報は減りません。機密性が必要なら暗号化、短くしたいなら Base64 です。
このツールはテキスト専用です。画像や圧縮ファイル、実行ファイルは xxd や hexdump を使ってください。オフセットも表示されるので、目的のバイトを探しやすくなります。大きなファイルをブラウザに貼ると、役に立つ前にタブが固まります。
- 鍵がなく、誰でも1手で戻せる
- サイズは2倍、情報量は変わらない
- バイナリは xxd / hexdump を使う
よくある質問
なぜ漢字は e4 b8 ad になるのですか
U+4E2D が UTF-8 の3バイト領域にあるためです。GBK では同じ文字が2バイトになります。16進数同士を比べるときは、先に双方の文字コードを確認してください。
Base64 との違いは何ですか
どちらも可逆です。16進数は1バイトを2文字で書くので2倍、Base64 は64種類の文字で約1.33倍になります。読みやすさは16進数、小ささは Base64 が有利です。
16進数を暗号として使えますか
使えません。鍵も強度もなく、誰でも即座に戻せます。暗号の代わりに使うのは、パスワードを付箋の裏に書くのと同じです。機密には暗号化と鍵の管理が必要です。
関連ツール:16進数エンコーダー