使い方
- 変換するには「テキスト → バイト」、デコードするには「バイト → テキスト」を選びます。
- バイト形式(2進数、16進数、10進数、8進数)を選びます。
- 入力を入力または貼り付けます。入力中に結果とバイト数が更新されます。
- 結果をコピーするか、入力欄に戻して変換結果を確認します。
仕組み
コンピューターはテキストをバイトとして保存します。このツールでは、ほとんどすべてのWebサイトや最新システムで使われているUTF-8を使用します。UTF-8では、128個のASCII文字(英字、数字、基本的な句読点)はそれぞれ1バイトです。そのため、Hは2進数で01001000、16進数で48になります。それ以外の文字は2〜4バイトで、éは2バイト(C3 A9)、€と☕は3バイト、ほとんどの絵文字は4バイトです。このため、バイト数が文字数を上回ることがあり、1文字が8ビットのグループ複数個に変換されることもあります。
各バイトは、よく使われる4つの形式で表せます。8桁の2進数(00000000–11111111)、2桁の16進数(00–FF)、10進数(0–255)、または3桁の8進数(000–377)です。区切り文字なしでバイトを並べる場合、2進数、16進数、8進数は桁数を固定し、10進数は再び正しく分割できるよう3桁で表します。
デコード時は、形式の違いをある程度許容します。バイト間のスペース、改行、カンマ、セミコロンは無視され、0xや0bの接頭辞、\xエスケープも無視されます。各グループを検証し、選択した形式で使えない数字や255を超える値がある場合は、そのバイトの位置を示します。デコード後は、バイト列が有効なUTF-8かどうかを確認し、テキストでない場合はその旨を表示します。
旗や肌の色付き絵文字のように複数のコードポイントで構成される文字は、各コードポイントが個別にエンコードされるため、ここでは複数の文字として数えます。
使用例
定番の「Hi」を2進数に
HはASCIIで72、iは105なので、「Hi」は2進数で01001000 01101001、16進数で48 69、10進数で72 105になります。2文字、2バイト、16ビットです。
「Café」が5バイトになる理由
C、a、fはそれぞれ1バイトですが、éはUTF-8で2バイトです。2進数では11000011 10101001(C3 A9)になります。この単語は4文字ですが、5バイトを使用します。データベースの列の上限や、バイト単位で測定されるプロトコルフィールドでは、この違いが重要です。
16進ダンプを読み取る
デバッガーに48 65 6c 6c 6f 2c 20 e4 b8 96 e7 95 8cと表示されています。「バイト → テキスト」と「16進数」を選んで貼り付けると、「Hello, 世界」と表示されます。漢字1文字はそれぞれ3バイトです。
よくある質問
1文字が16、24、32ビットになるのはなぜですか?
UTF-8で1バイト(8ビット)に収まるのはASCII文字だけです。アクセント付き文字や多くのアルファベットは2バイト、中国語、日本語、韓国語、多くの記号は3バイト、絵文字は4バイトを使います。各バイトは個別のグループとして表示されます。
これはASCIIですか?それともUTF-8ですか?
UTF-8です。UTF-8はASCIIとの互換性を考慮して設計されているため、英語だけのテキストでは結果はASCIIと同じです。ASCIIだけでは、ASCII以外の文字を表現できません。
2進数をデコードするとエラーになるのはなぜですか?
各バイトは2進数8桁以内で、0と1だけを含む必要があります。スペースがない場合、桁数の合計は8の倍数でなければなりません。エラーメッセージには、読み取れなかったバイトが示されます。
「有効なUTF-8ではありません」とはどういう意味ですか?
バイト列が有効なUTF-8の並びになっていません。たとえば、127を超える単独のバイトや、途中で途切れた並びが該当します。データはWindows-1252など別の文字コードのファイルに由来するか、そもそもテキストではない可能性があります。
プライバシー
変換は、ブラウザーに組み込まれたUTF-8エンコーダーとデコーダーを使って実行されます。テキストがアップロード、保存されたり、アクセス解析に含まれたりすることはありません。