テキストを 16 進数に変換
メモリダンプを読む、プロトコルが実際に何を送出したのか確かめる、CTF の問題をほどく。遅かれ早かれ、文字列の裏側にあるバイト列が必要になります。テキストを貼り付ければ、この変換ツールが 1 バイトずつ 16 進数にして返します。hexdump のようにスペースで区切る形式(48 65 6c 6c 6f)でも、切れ目なくつなげた形式(48656c6c6f)でも構いません。モードを切り替えれば逆方向になり、貼り付けた 16 進数が読めるテキストに戻ります。
変換ツールの動き
-
1
方向を選ぶ
テキストから 16 進数は入力を符号化し、16 進数からテキストは文字に戻します。
-
2
区切りを選ぶ
符号化時はバイト間に半角スペースを 1 つ入れるか、まったく入れないか。選択肢はこの 2 つです。
-
3
入力を貼り付ける
テキストは UTF-8 として読まれます。16 進数は 0x や \x の接頭辞、カンマ、スペース、改行つきでも構いません。自動で取り除かれます。
-
4
変換してコピーする
結果は下にコピーボタンつきで表示されます。ファイルのダウンロードはありません。
なぜ 10 進数ではなく 16 進数なのか
16 進数の 1 桁はちょうど 4 ビットを表すので、2 桁でちょうど 1 バイトになります。例外はありません。10 進数では値がまだ収まるかどうかを計算して確かめる必要がありますが(128 は範囲内か、256 はどうか)、16 進数はそれを見せてくれます。00 が最小のバイト、ff が最大のバイトで、その間のどのバイトも幅は 2 文字です。この桁のそろい方こそ、メモリダンプ、パケットキャプチャ、ファイルシグネチャ、カラーコードが 16 進数で書かれる理由です。
このツールが実際に出力するもの
- 必ず小文字。 符号化側は
6cと書き、6Cとは書きません。16 進数は大文字と小文字を区別しないので情報は失われませんが、出力先の書式が大文字を求めるなら、大文字小文字を変換するツールを通してください。 - 必ず 1 バイト 2 桁。 タブ文字は
9ではなく09です。バイトの境目を数えられるようにするためです。 - スペースか、なしか。 区切りはこの 2 つだけです。符号化側で
0xや\xの接頭辞が付くことはないので、C や Python のエスケープ文字列が必要なら手元のエディタで補ってください。 - 一貫して UTF-8。 テキストは文字数ではなくバイト数で数えられます。
16 進数と Unicode
H は UTF-8 で 1 バイトなので 48 になります。素の ASCII を外れる文字はそれ以上を使います。
| 文字 | UTF-8 の 16 進数 | バイト数 |
|---|---|---|
| A | 41 | 1 |
| é | c3 a9 | 2 |
| € | e2 82 ac | 3 |
| 🚀 | f0 9f 9a 80 | 4 |
したがって Hello は 48 65 6c 6c 6f になり、5 文字で 5 バイトです。一方 café は 63 61 66 c3 a9 になり、4 文字なのに 5 バイトです。é が 2 バイト必要だからです。日本語はさらに大きく、ひらがな・カタカナ・漢字はいずれも 3 バイトが基本で、たとえば「あ」だけで e3 81 82 の 3 組になります。短い文字列なのに思ったより 16 進数の組数が多いときは、たいていこれが理由です。
復号側が受け付ける書き方
次のどれを貼り付けても Hello が返ります。
48 65 6c 6c 6f、hexdump 形式48656c6c6f、区切りなしの素の並び0x48656c6c6f、整数リテラル形式\x48\x65\x6c\x6c\x6f、C と Python のエスケープ48,65,6C,6C,6F、カンマ区切りで大文字小文字が混ざっていても可
接頭辞、カンマ、スペース、タブ、改行は復号前に取り除かれます。それ以外は取り除かれません。48-65 のハイフン、カラーコードの前の #、f より後ろのアルファベットは復号を止めますし、桁数が奇数のときも同じです。半バイトは文字になれないからです。こうした場合、ツールは中途半端な結果を推測するよりも、何も返さないほうを選びます。出力欄が空のままなら、そこを疑ってください。
16 進数のカラーコードは同じ表記でも中身が違う
#ff8800 も同じ 16 進数の体系ですが、この 3 バイトが表しているのは文字ではなく赤・緑・青の各チャンネルです。# を外してここで復号すると、読めるテキストにならない 3 バイトの生データが返ってきます。その用途にはカラーピッカーをお使いください。
よくある質問
同じです。16 進数と base16 は同一の体系を指す 2 つの呼び名で、いずれも 16 個の数字(0 から 9 と a から f)を使い、1 つが 4 ビットを担います。
このツールではできません。符号化側は常に小文字で書きます。16 進数は大文字と小文字を区別しないため 4f と 4F は同じバイトです。書式の都合で大文字が必要なら、任意の大文字小文字変換ツールを通してください。復号側はどちらの書き方も問題なく読みます。
復号側は、0x や \x の接頭辞、カンマ、空白を取り除いたうえで、0 から 9 と a から f の文字が偶数個そろっている場合だけを受け付けます。ハイフン、#、f より後ろのアルファベット、1 桁の欠けがあると入力は無効になり、ツールは誤った結果より空の結果を選びます。桁数を数え、紛れ込んだ記号を探してみてください。
絵文字の多くは Unicode の追加面にあり、UTF-8 では 4 バイトで格納されるためです。素の ASCII 文字は 1 文字 1 バイトのままなので、英字は 1 文字につき 1 組になりますが、日本語はそうなりません。
できません。ここはテキスト入力欄なので、入力または貼り付けできるものを扱います。バイナリデータであれば base64 のほうが小さく、扱いも簡単です。
されます。変換は当社のサーバー上で実行されるため、貼り付けた内容はリクエストとともに送られ、結果が返ってきます。記録するのは操作の種類と選んだオプションだけで、テキストそのものは記録しませんし、応答後にテキストを保存することもありません。本当に秘匿すべき内容には、手元の端末でオフライン動作する変換ツールをお使いください。
関連ツール
アナグラムジェネレーター
短い語を入力すると、重複した並べ替えを除き、表示件数を調整しながら文字の一意な並べ替えを確認できます。
キャラクター名ジェネレーター
小説、ゲーム、RPGなどのキャラクター名を生成します。ファンタジー、SF、現代から選び、5〜30個の名前を設定すると、すぐに使える名前が手に入ります。
都市名ジェネレーター
世界観づくり、地図、ゲーム、物語、モックデータ向けに、架空の都市、町、村、首都の名前を生成し、各結果に短いメモを添えます。
以下記号(≤)
≤ 記号と関連する数学の比較記号をコピーできます。スプレッドシート、論文、ウェブページ向けに Unicode、HTML エンティティ、LaTeX 記法を掲載しています。
カンマから改行へ
カンマ区切りのテキストを1行に1つの項目に変換したり、行をカンマ区切りの文字列にまとめたりできます。
丸付きテキストジェネレーター
プレーンテキストを丸で囲まれた Unicode 文字に変換します。ソーシャル略歴、チャット、ドキュメントの輪郭、塗りつぶし、丸数字のバリエーション。
このツールは他の言語でも利用できます
- Text till hex [SV]
- Văn bản sang hex [VI]
- Text in Hex [DE]
- Teks ke heksadesimal [ID]
- Tekst na hex [PL]
- تحويل النص إلى ست عشري [AR]
- Texto para hexadecimal [PT]
- Texto a hexadecimal [ES]
- Texte en hexadécimal [FR]
- 텍스트를 16진수로 [KO]
- Tekst naar hex [NL]
- แปลงข้อความเป็นเลขฐาน 16 [TH]
- Text to Hex [EN]
- Da testo a esadecimale [IT]
- Текст в шестнадцатеричный код [RU]
- Metinden onaltılığa [TR]
- 文本转十六进制 [ZH]