テキスト - 2進数変換ツール
テキストを2進数(8ビットUTF-8バイト)に変換し、逆変換もできます — 両方のボックスがリアルタイムかつ双方向です。
1,120回閲覧
仕組み
テキストは1文字ずつ2進数に変換されるのではなく、まずUTF-8としてエンコードされた後、バイト単位で変換されます。この違いは重要です。1文字が常に1バイトに収まるとは限らないからです。ASCII文字(英数字と記号、コードポイント0-127)を入力した場合はちょうど1バイトに収まるため、たとえばAは1つの8ビットグループになります: 01000001。しかし、英語以外のほとんどの文字はより多くの領域を必要とします。トルコ語の点付き大文字İ(Unicode U+0130)は、UTF-8では1バイトではなく2バイトでエンコードされます: 11000100 10110000 — 2つの独立した8ビットグループです。😀(U+1F600)のような絵文字は4バイトを必要とします: 11110000 10011111 10011000 10000000。このツールはまさにこのパイプラインを実行します — テキスト → UTF-8バイト → バイトごとにスペースで区切られた1つの8ビット2進数グループ — そのため「İ」「ğ」や絵文字を含む単語は、「1文字は1バイト」という単純な想定より明らかに多くのグループを生成します。
この余分なバイトは無作為なものではなく、UTF-8を認識できるあらゆるデコーダー(このツールが変換を逆方向に実行する際も含む)が識別できる固定のビットパターンに従っています。複数バイトのシーケンスの最初のバイトは、そのバイトが何バイトで構成されているかを示す一連の1ビットの後に0が続く形で始まります — 110xxxxxは「合計2バイト」、1110xxxxは「3バイト」、11110xxxは「4バイト」を意味します — 一方、それに続く各バイト、すなわち継続バイトは、常に固定の接頭辞10xxxxxxで始まります。İの11000100 10110000を読み解くと、デコーダーは110(2バイトの先頭バイト)を認識し、続いて10で始まるバイト(ちょうど1つの継続バイト)を確認して、シーケンスが完結していることを確かめ、両方のバイトの残りのビットから単一のUnicodeコードポイントU+0130を再構築します。複数バイト文字の途中で迷い込んだバイトや破損したバイトがあるとデコードが失敗するのも、このためです — 継続バイトの接頭辞が一致しなければ、文字を再構成できません。
知っておくべきこと
2進数をテキストに戻す変換は、同じパイプラインを逆方向にたどります: 8ビットグループが順番に読み込まれ、各先頭バイトの接頭辞を調べていくつの継続バイトが付随するかを判断することで完全なUTF-8バイトシーケンスに再グループ化され、その後文字へとデコードされます — そのため、正しく生成された2進数の文字列は、トルコ語文字や絵文字を含め、常に元のテキストと完全に一致する形へ変換され、近似値になることはありません。これが機能するのは、ここで扱う2進数が特にUTF-8であるからにほかなりません。異なるエンコーディング(UTF-16や、ISO-8859-9/Windows-1254のようなトルコ語用のシングルバイトエンコーディングなど)で生成された2進数は、同じ文字に対して異なるバイト数とビットパターンを使用するため、ここに貼り付けても誤ったテキストにデコードされるか、完全に失敗します — これは万能な2進数-テキスト変換ツールではなく、UTF-8専用のツールです。変換はすべてブラウザ内でクライアント側で実行されるため、入力したテキストや2進数がどこかに送信されることはありません。
よくある質問
なぜ1文字が8ビットより多く生成されることがあるのですか?
テキストはまずUTF-8としてエンコードされます。ASCII文字は1バイト(8ビット)で済みますが、アクセント付きの文字、トルコ語の文字、絵文字は2~4バイトになることがあります — 各バイトはそれぞれ独立した8ビットグループとして表示されるため、1文字が正当に16、24、32ビットへと展開されることがあります。
İ、ğ、şのようなトルコ語の文字は、なぜ1つではなく2つの2進数グループを必要とするのですか?
これらは0-127のASCII範囲外にあるため、UTF-8では2バイトのシーケンスとしてエンコードされます: 110xxxxxで始まる先頭バイトの後に、10xxxxxxで始まる継続バイトが1つ続きます。例えばİは11000100 10110000であり、1文字を表す2つのグループです。
絵文字も変換できますか?何ビット必要ですか?
はい。ほとんどの絵文字はUnicode内で十分に高い位置にあるため、完全な4バイトのUTF-8形式を必要とします: 11110xxxで始まる先頭バイトの後に、それぞれ10xxxxxxで始まる継続バイトが3つ続きます — 1つの絵文字文字につき合計32ビットです。
2進数の入力に無効なグループが含まれている場合はどうなりますか?
グループは0と1のちょうど8文字で構成され、スペースで区切られている必要があります。無効または不完全なグループ — および有効な先頭バイトと一致しない継続バイト — は、変換をクラッシュさせることなくスキップされます。
このツールはUTF-8以外のエンコーディングでも機能しますか?
いいえ、そのように主張することもありません。UTF-16や、トルコ語用のISO-8859-9のようなシングルバイトのレガシーエンコーディングは、同じ文字に対して異なるバイト数とビットパターンを割り当てます。これらのエンコーディングから生成された2進数はここで正しくデコードされません — このツールは特にUTF-8のテキスト-2進数変換ツールです。
関連ツール
問題を報告
テキスト - 2進数変換ツール
コメント
まだコメントはありません — 最初のコメントを書いてみましょう!