テキスト ↔ Hex 変換ツール

テキストを16進数に変換し、16進数を読み取り可能なテキストに戻します — UTF-8完全対応、すべてブラウザ内で処理。

1,067回閲覧

テキストからHexへ

HexからTextへ

テキストからHexへの変換はどのように機能しますか?

16進数(Hexadecimal)は基数16の位取り記数法です:16個の記号(0-9、続いて10-15を表すA-F)を使い、各桁の位が16の累乗の値を持ちます。この方式がコンピューティングとこれほど自然に結びつく理由は、16進数の1桁がちょうど4ビット(1「ニブル」)を表すためです — つまり16進数2桁は常に丸めや曖昧さなくちょうど1バイト(8ビット)を表します。だからこそ、1バイトの値は2文字を超える16進文字を必要とせず、0-255は00-FFにきれいに対応します。

このツールはテキストとこの表現形式の間を相互に変換します。テキストはまずUTF-8を使って生のバイト列に変換され(これにより、トルコ語の文字や絵文字を含むあらゆる文字が変換の往復を生き延びます)、次に各バイトが2桁の16進ペアとして書き出されます:"Hi"は48 69になります。これは、文字Hがバイト72(0x48)、iがバイト105(0x69)であるためです。ASCII以外の文字を含む具体例として、"çay"はC3 A7 61 79にエンコードされます — "ç"単体で2バイト(C3 A7)を占めるのは、1バイトのASCII範囲外にあるためで、"a"と"y"はそれぞれ1バイトです。デコードはこの逆の処理を行い、スペース、改行、「0x」プレフィックスは無視されます。

テキスト、バイト、16進数の間のこの対応関係は、このツールが単なる興味本位を超えて役立つ理由でもあります:ネットワークスニファやシリアルコンソールから得た16進ダンプを貼り付けてテキストとして読み取る、短いバイナリのペイロードを16進数としてJSON文字列に埋め込む、自分のコードが生成した値が仕様書に16進数で示されている値と一致するか再確認する — これらはすべて、実際のデバッグ作業にエンコード/デコードの操作を当てはめているだけです。

知っておくべきこと

  • 16進エンコードは暗号化ではありません:これはデータの表現方法を変えるだけで、秘匿性を与えるものではありません。どの16進文字列も即座に、決定的に元のバイト列へとデコードできます — その文字列を持つ人なら誰でも読めます。本当の機密性が必要な場合は、エンコードではなく実際の暗号化(AESなど)を使ってください。
  • 1桁あたり4ビットである理由:ニブル(4ビット)はちょうど16通りの値(2進数で0000-1111)を持ち、これは16進数の1桁に過不足なく一対一で対応します — 一方、10進数に変換する場合は数全体にわたる計算が必要です。これが、16進数がカラーコード(#RRGGBB — 3バイト、16進6桁)、メモリアドレス、低レベルのデバッグに登場する理由です:生のバイナリデータを最もコンパクトかつ読みやすく表示する方法だからです。
  • UTF-8は可変長です:ASCII文字は1バイトですが、アクセント付きの文字やほとんどの非ラテン文字は2バイト、絵文字はしばしば4バイトを占めます — そのため、ASCII以外の文字が含まれると、16進出力の長さは単純に「見た目の文字1つにつき2文字」にはなりません。
  • 対応する入力形式:デコーダーは、スペースの有無、改行、「0x」プレフィックスの有無にかかわらず16進ペアを受け付けます — 「48 69」「4869」「0x48 0x69」はすべて「Hi」にデコードされます。
  • デコードでは大文字・小文字を区別しません:16進数の文字A-Fは大文字、小文字、あるいは混在して書いても同じようにデコードされます。どちらも同じ4ビットの値を表すためで、重要なのはバイトのまとまりと順序だけです。

よくある質問

16進数エンコードは安全ですか?

いいえ — これは表現方法を変えるだけで、秘匿性は提供しません。16進数は誰でも即座にデコードできます。機密データには本物の暗号化(AESなど)を使用してください。

トルコ語の文字や絵文字には対応していますか?

はい。このツールはUTF-8を介してエンコードするため、アクセント記号、トルコ語の文字、絵文字を含むあらゆるUnicode文字が、一部の文字が複数バイトを占める場合でも正しく変換・復元されます。

デコーダーはどのような入力形式に対応していますか?

スペースの有無、改行、「0x」プレフィックスの有無にかかわらず対応する単純な16進ペアです:「48 69」「4869」「0x48 0x69」はすべて「Hi」にデコードされます。

なぜ16進数の1桁は常に4ビットに等しいのですか?

4ビットはちょうど16通りの異なる値(2⁴ = 16)を表現でき、これは16進数の16個の記号(0-9、A-F)と一対一で対応するからです。だからこそ、2進数と16進数の間の変換は、10進数への変換とは異なり、割り算や余りの計算を必要としない純粋な対応表の参照になります。

#FF5733のようなカラーコードは、なぜ10進数ではなく16進数を使うのですか?

色の赤・緑・青の各チャンネルはそれぞれ1バイト(0-255)として保存され、16進数はちょうど2桁で1バイトをコンパクトに表現します — #FF5733は即座に3バイト、FF、57、33として読み取れますが、10進数での同等表記(255, 87, 51)は区切りのカンマと可変長の数字が必要になり、CSSやデザインツールに入力するには扱いにくくなります。

コメント

まだコメントはありません — 最初のコメントを書いてみましょう!

関連ツール