文字列→16進数変換ツールの使い方
- テキストを入力するか、貼り付けます。日本語を含むあらゆる言語の文字や絵文字に対応しています。
- 文字コード(標準はUTF-8)、大文字・小文字、バイトの区切り方を選びます。16バイトごとに改行にチェックを入れると、16進ダンプのような表示になります。
- 16進数の文字列をコピーするか、テキストファイルとしてダウンロードします。
文字列を16進数に変換する仕組み
コンピューターはテキストをバイトとして保存しています。このツールは、選択した文字コードで各文字のバイト値を調べ、2桁の16進数で書き出します。ASCIIとUTF-8ではAは65 = 41、aは97 = 61、スペースは32 = 20なので、「Hi!」は48 69 21になります。
| 文字 | 10進数 | 16進数 |
|---|---|---|
A … Z | 65 … 90 | 41 … 5A |
a … z | 97 … 122 | 61 … 7A |
0 … 9 | 48 … 57 | 30 … 39 |
| スペース | 32 | 20 |
! | 33 | 21 |
| 改行 | 10 | 0A |
UTF-8・Latin-1・UTF-16の比較
同じ文字でも、文字コードによって異なるバイト列になります。Web、JSON、大半のファイルにはUTF-8が適しています。ほかの文字コードは、受け取る側のシステムが必要とする場合にだけ使いましょう。
| テキスト | UTF-8 | Windows-1252 | UTF-16 LE |
|---|---|---|---|
A | 41 | 41 | 41 00 |
é | C3 A9 | E9 | E9 00 |
€ | E2 82 AC | 80 | AC 20 |
| 😀 | F0 9F 98 80 | 表現不可 | 3D D8 00 DE |
プログラムで文字列を16進数に変換する
- Python:
'Hello'.encode().hex()は48656c6c6fを返します。.hex(' ')とするとスペース区切りになります。 - Node.js:
Buffer.from('Hello').toString('hex') - ブラウザのJavaScript:
[...new TextEncoder().encode('Hello')].map((b) => b.toString(16).padStart(2, '0')).join('') - LinuxとmacOS:
echo -n 'Hello' | xxd -p
よくある質問
「文字列→16進数」と「ASCII→16進数」は同じですか?
英字・数字・記号であれば同じで、ASCIIとUTF-8は同じバイト列になります。é、ß、Ж、中といった文字(日本語のかなや漢字を含む)や絵文字はASCIIに含まれず、UTF-8ではそれぞれ2~4バイトで表されます。
1文字が複数の16進数バイトになるのはなぜですか?
UTF-8で1バイトになるのはASCII文字だけです。éはC3 A9、€はE2 82 ACになり、ほとんどの絵文字は4バイトです(日本語のかなや漢字は通常3バイト)。送信先のシステムがUTF-16やLatin-1を必要とする場合は、その文字コードを選んでください。
どの区切り文字を使えばよいですか?
ハッシュ値やコンパクトな文字列には区切りなし、読みやすい16進ダンプにはスペース、MACアドレスや証明書のフィンガープリントにはコロン、C・C#・Javaの配列には0x48, 0x65、C・Python・シェルスクリプトの文字列リテラルには\x48が適しています。
16進数をテキストに戻すには?
入れ替えボタンを押します。16進数が入力欄に移り、同じ文字コードでデコードされます。デコーダーは、ここで選べるすべての区切り文字に対応しています。