本文へスキップ
Case Converter Online
ja

16進数テキスト変換(HEX to Text)

16進数のバイトを貼り付けるとテキストとして読めます。テキストを入力すれば16進数のコードを確認できます。スペース区切り、0x 付き、\x エスケープのどれでも認識します。

双方向に変換できます。デコードするときは、16進数の中のスペース、0x、\x、コロン、カンマは無視されます。

16進数とは

16進数(ヘキサ、HEX)は16を基数とする数の表し方です。0 から 9 の数字と A から F のアルファベットを使い、A は10、F は15を意味します。16進数2桁で0から255までの値を表せるので、ちょうど1バイト分になります。そのため、生のデータをコンパクトに、読みやすく表示する方法として使われています。

16進数は、メモリダンプ、ネットワークのパケットキャプチャ、ファイルのシグネチャ、カラーコード、ソースコードのエスケープシーケンス、エラーログなどで目にします。そうしたバイトをテキストに戻すと、データの中身がわかることがよくあります。

16進数テキスト変換の使い方

16進数をテキストに。 左側の「16進数」欄に16進数を貼り付けます。右側の「テキスト」欄にデコードされたテキストが表示されます。よくある区切り文字は無視されるので、次のような形式をそのまま貼り付けられます。

  • スペース区切りのバイト:48 65 6c 6c 6f
  • 区切りなしの文字列:48656c6c6f
  • C言語風の接頭辞:0x48 0x65 0x6c
  • エスケープシーケンス:\x48\x65\x6c
  • コロンやカンマで区切ったバイト:48:65:6c:6c:6f

テキストを16進数に。 右側の「テキスト」欄に入力します。左側に16進数が表示されます。たとえば 日本語 は e6 97 a5 e6 9c ac e8 aa 9e になります。

16進数の形式で、16進数の書き方を選べます。

  • スペース区切り:48 65 6c:読んだり比べたりするとき向け
  • 連結:48656c:コンパクトな保存やハッシュ形式の文字列向け
  • 接頭辞付き:0x48 0x65:C、C++ などのコード向け
  • エスケープ:\x48\x65:Python、JavaScript、シェルスクリプトの文字列リテラル向け

「A から F を大文字に」をオンにすると、アルファベットが大文字で書かれます。「コピー」でどちらの欄も取り出せ、「クリア」で両方の欄が空になります。

仕組み

デコードするときは、まず区切り文字を取り除き、16進数の文字だけが残っていて桁数が偶数であることを確認します。次に、2桁ずつを1バイトとして読み取り、そのバイトを UTF-8 のテキストとしてデコードします。エンコードはその逆です。テキストを UTF-8 のバイトに変換し、各バイトを2桁の16進数にします。

16進数1桁は4ビットを表します。バイト 48 は 4 × 16 + 8 = 72 で、大文字の H のコードです。

変換例

16進数 テキスト
41 A
48 69 21 Hi!
48 65 6c 6c 6f Hello
48 65 6c 6c 6f 2c 20 57 6f 72 6c 64 21 Hello, World!
63 61 66 c3 a9 café
e2 82 ac €

同じテキストを各出力形式で表すと次のようになります。

形式 café
スペース区切り 63 61 66 c3 a9
連結、大文字 636166C3A9
接頭辞付き 0x63 0x61 0x66 0xc3 0xa9
エスケープ \x63\x61\x66\xc3\xa9

よく使う16進数の値

16進数 文字 16進数 文字
20 スペース 30 0
0a 改行(LF) 41 A
0d 復帰(CR) 61 a
09 タブ 7e ~

ヒントと制限

  • 意味のない記号が出る場合、たいていはデータがテキストではありません。 画像、圧縮ファイル、暗号化されたデータは、奇妙な記号や置換文字になります。これは想定どおりの動作です。
  • 数値のバイト順を確認しましょう。 このツールは、バイトを与えられた順に読みます。メモリダンプ内の複数バイトの数値はリトルエンディアンで保存されていることが多いため、右から左へ読んでください。
  • 16進数のカラーコードはテキストではありません。 #ff8800 は赤・緑・青の強さを表していて、文字ではありません。
  • Shift_JIS のデータは正しく読めません。 このツールはバイトを UTF-8 として読みます。古い日本語のファイルなどに多い Shift_JIS や EUC-JP のバイトは、文字化けや置換文字になります。
  • 16進数は暗号化ではありません。 バイトを別の書き方で表しているだけです。

そのほかの16進数変換方法

コマンドライン。 Linux と macOS では、xxd -p でファイルを16進数だけの形にし、xxd -r -p で元に戻せます。echo -n Hello | xxd -p を実行すると 48656c6c6f と表示されます。

Python。 bytes.fromhex('48656c6c6f').decode() は Hello を返し、'Hello'.encode().hex() は 48656c6c6f を返します。

JavaScript(Node)。 Buffer.from('48656c6c6f', 'hex').toString() は Hello を返します。

Excel。 ASCII の1バイトなら、=CHAR(HEX2DEC("48")) で H が返ります。逆方向は =DEC2HEX(72) です。

関連ツール

同じバイトを0と1で見るには、2進数翻訳ツールを使ってください。UTF-8 エンコードツールでは、各文字をコードポイントやバイトと一緒に確認できます。データが16進数ではなく Base64 の場合は、Base64 デコーダーを使ってください。

16進数テキスト変換のよくある質問

16進数をテキストに変換するには?

左側の「16進数」欄に16進数を貼り付けてください。すぐに右側にテキストが表示されます。48 65 6c 6c 6f、48656c6c6f、0x48 0x65 0x6c 0x6c 0x6f のどれも Hello にデコードされます。

桁数が奇数というエラーが出るのはなぜですか?

1バイトは必ず2桁の16進数で書かれるため、区切りを取り除いた正しい16進数は常に偶数桁になります。貼り付けたどこかで1桁抜けているか、余分な桁があるのがよくある原因です。1桁の値は、a ではなく 0a のように先頭にゼロを付けて書く必要があります。

出力は ASCII ですか、UTF-8 ですか?

UTF-8 です。UTF-8 は ASCII を含んでいます。英語だけのテキストなら、どちらでも同じ16進数になります。ASCII 以外の文字は複数のバイトを使うため、é は c3 a9、ユーロ記号は e2 82 ac、ひらがなの あ は e3 81 82 になります。

16進数の大文字と小文字に違いはありますか?

ありません。4F と 4f は同じバイトです。貼り付け先が大文字を求めている場合は、「A から F を大文字に」をオンにしてください。

その他のコード・データツール

すべてのツールを見る