Hex エンコード

テキストを下に貼り付けてエンコードをクリックすると16進数文字列に変換されます。すべての処理はブラウザ内でローカルに行われます。

コピーしました!

HEXエンコーディングとは?

16進数エンコーディングはデータの各バイトを2文字の16進数文字列(00ff)に変換します。バイナリデータの検査、ネットワークプロトコルのデバッグ、コード内でのバイト配列の表現に便利です。

複数バイトを使用するUTF-8文字は、複数の16進数ペアを生成します。

区切り文字と大文字小文字は自由に選べます。詰めて書けばコンパクトな文字列に、空白を挟めば読みやすく、コロンにすればフィンガープリントや MAC アドレスでよく使われる書き方になります。処理はすべてブラウザ内で行われます。

デコードできない不具合を追っていますか。

デコードできないペイロードは、たいてい原因ではなく症状です。経路のどこかでの二重エンコード、宣言せず仮定された文字セット、誰の想定とも少しずれたバイト列に対して署名されたトークン。私たちはまさにこうした領域、つまり連携やAPI、そしてその間でデータを受け渡すシステムを手がけています。

不具合の内容を相談する

よくある質問

16 進エンコードは何に使いますか。
16 進は、人がバイトを読む必要があるときに選ぶ表現です。ハッシュ、チェックサム、暗号鍵、色の値、MAC アドレス、メモリダンプ、パケットキャプチャがいずれも 16 進で示されるのは、1 バイトがちょうど 2 文字になり、位置が列に揃って、1 バイトの誤りが一目で分かるからです。ソースコードにバイナリを貼り込むときの定番でもあります。
16 進エンコードは Base64 と何が違いますか。
16 進はかさばりますが読みやすいです。1 バイトが 2 文字になるので出力はちょうど入力の 2 倍、Base64 は約三割増です。その代わり 16 進の対応関係は固定で明快です。ある 2 文字を指せばどのバイトか分かり、オフセットを目で数えられ、周囲に影響を与えずに 1 バイトだけ書き換えられます。容量が問題になる場面では Base64、人が見る場面では 16 進が勝ちます。
1 文字が複数の 16 進ペアになることがあるのはなぜですか。
16 進が符号化するのは文字ではなくバイトで、テキストは UTF-8 を通してバイトになるからです。ASCII の範囲なら 1 バイト、つまり 1 ペアです。アクセント付きラテン文字、ギリシャ文字、キリル文字は 2 バイト、多くの漢字や仮名、ハングルは 3 バイト、絵文字は 4 バイトを取ります。ですから 5 文字の文字列が 20 ペアになることも普通にあります。
区切り文字はどれを選べばよいですか。
出力の行き先によります。何も挟まない形はコードや多くの API が期待するもので、いちばん短くなります。空白は長い文字列を読みやすくし、ダンプで見慣れた形です。コロンは証明書のフィンガープリントや MAC アドレスの慣例です。バイト自体は三つとも同じで、変わるのは間の記号だけです。
16 進エンコードはハッシュ化と同じですか。
いいえ。ただし両者はたいてい一緒に現れます。ハッシュは一方向の関数で、どんな入力も固定長のダイジェストに縮め、元には戻せません。16 進はバイトを書き表す可逆の方法です。ハッシュは通常 16 進で表示されるため似て見えますが、パスワードを 16 進にしても保護には一切ならず、同じパスワードの長い版ができるだけです。