テキスト ↔ バイナリ変換
ブラウザ上でそのまま、テキストをバイナリに、バイナリをテキストに変換できます。UTF-8 に完全対応しているため、文字・数字・記号はもちろん絵文字まで正しく変換されます。8ビット出力はスペース区切りか連続形式かを選べます。
区切り
上にデータを入力すると、変換結果がここに表示されます。
テキスト ↔ バイナリ変換 の使い方
- 1
変換方向を選ぶ
トグルで「テキスト → バイナリ」または「バイナリ → テキスト」を選びます。入れ替えボタンを押すと結果が入力欄に移動し、逆方向に変換し直せます。
- 2
データを入力する
テキストを入力または貼り付けるか、バイナリ文字列を貼り付けます。入力すると同時に変換が自動的に実行され、UTF-8 完全対応であらゆる文字を扱えます。
- 3
区切りを選ぶ
バイナリ出力では、読みやすさのためにバイトごとにスペースを入れるか、連続したストリームにするために区切りなしを選べます。デコード時のスペースは任意です。
- 4
結果をコピーする
変換された結果を確認してクリップボードにコピーすれば、必要な場所にすぐ貼り付けられます。
テキストはどのようにバイナリになるのか
2進数とは何か、なぜコンピューターはそれを使うのか
2進数は基数2の数体系で、0 と 1 というたった2つの数字だけで構成されます。それぞれの桁はビットと呼ばれ、binary digit(2進数字)の略です。コンピューターが2進数を使うのは、その物理的な部品が、オンかオフか、高電圧か低電圧かという2つの安定した状態をもつスイッチであり、その2つの状態が 1 と 0 に自然に対応するからです。この文章そのものを含め、コンピューターが保存するあらゆるものは、突き詰めればビットの長い並びです。
テキストも例外ではありません。文字を保存するために、コンピューターはまず文字エンコーディングを通じてその文字の番号を取り決め、次にその番号を2進数で保存します。手作業でテキストを2進数に変換するのは、この2つの手順を明示的に行うだけのことです。各文字の数値コードを調べ、そのコードを基数2で書く、という流れです。このツールは結果をビットのグループとして表示するので、その構造を読み取れます。
バイトと8ビットグループ
バイトは8つのビットのグループで、記憶の基本単位です。8ビットは2の8乗、すなわち256個の異なる値を表すことができ、0 から 255 までの番号が付きます。この範囲は、もとの ASCII 文字に加えてさらに多くの文字を収めるのにちょうど十分であり、だからこそバイトは、基本的なテキストの1文字を表す標準的なサイズになりました。
バイトは常に8ビットなので、このコンバーターは各バイトを固定の8桁のグループとして書き、必要に応じて先頭にゼロを補います。コード 72 の文字は、単なる 1001000 ではなく 01001000 と書かれ、すべてのバイトが同じ幅でそろうようにします。読みやすさのためにグループをスペースで区切ることも、連続したストリームとしてつなげることもできますが、どちらでもビットは同一です。
文字からビットへ、ステップごとに
1つの文字を変換するには2つの動作が必要です。まず、そのコードポイントを求めます——基本的な英字ではこれは ASCII 値なので、大文字の H は 72、小文字の i は 105 です。次に、どの2のべき乗を足し合わせるとその数になるかを考えて、その数を8ビットで表します。ビットの位置は左から右へ、それぞれ 128、64、32、16、8、4、2、1 という値をもちます。
72 を例にとりましょう。これは 64 + 8 に等しいので、64 の位置に 1、8 の位置に 1 を置き、それ以外はすべて 0 にすると、01001000 になります。105 を例にとると、これは 64 + 32 + 8 + 1 に等しいので、ビットは 01101001 です。逆方向に進むには、1 が現れている位置の桁の値をすべて足し合わせれば、もとのコードが復元され、それを調べることで文字が得られます。
実例:「Hi」をエンコードする
H と i の2つの文字を、この手順に通してみましょう。H の ASCII コードは 72 で、これは 64 + 8 なので、バイトは 01001000 になります。文字 i の ASCII コードは 105 で、これは 64 + 32 + 8 + 1 なので、バイトは 01101001 になります。スペースでつなぐと、「Hi」は 01001000 01101001 になります。
逆に読み解くのは、同じ算術を逆向きに行うだけです。最初のグループ 01001000 は 64 と 8 の位置に 1 があり、合計して 72、つまり H です。2つ目のグループ 01101001 は合計が 64 + 32 + 8 + 1 = 105 で、つまり i です。8ビットのグループが2つ、文字が2つ——短い単語がどのように保存されるかを、きれいに示した例です。
ASCII と UTF-8、そしてマルチバイト文字
1文字が1バイトという単純な図式が成り立つのは、英字・数字・一般的な約物を網羅する、もとの ASCII セット、すなわちコードポイント 0 から 127 だけです。それを超えるもの——アクセント付き文字、他の文字体系、記号、絵文字——は、このツールが採用するエンコーディングである UTF-8 を使います。UTF-8 は可変幅です。ASCII 文字は1バイトのままですが、他の文字は2バイト、3バイト、または4バイトを使い、各バイトがそれぞれ独自の8ビットグループになります。
たとえばアクセント付きの é は、UTF-8 では 0xC3 と 0xA9 の2バイトなので、2つの2進数グループ、すなわち 11000011 10101001 になります。典型的な絵文字は4バイトで、したがって4つのグループになります。これが、英語以外のテキストの文字列が、目に見える文字数よりも多くの8ビットグループを生み出す理由であり、また合計のビット数が常に8の倍数になる理由です。
2進数をテキストに読み戻す
デコードするために、ツールはビットのストリームを8ビットのまとまりに切り分け、各まとまりを数値に変換し、それらの数値を UTF-8 としてデコードして文字を復元します。これがうまく機能するには、入力に 0 と 1 の数字だけが含まれている必要があり、また合計のビット数が8の倍数でなければなりません。バイトは8ビットの端数にはなれないからです。
グループ間のスペースは任意であり、無視されるので、0100100001101001 と 01001000 01101001 はどちらも「Hi」にデコードされます。バイナリを貼り付けて変換エラーが出る場合、よくある原因は、文字列のどこかに紛れ込んだ2進数以外の文字か、8で割り切れない長さ——おそらくビットが1つ足りないか余分にあるか——です。それらを直せば、デコードは成功します。
これが役立つ場面
テキストから2進数への変換は、教育の定番です。「コンピューターはあらゆるものを数値として保存する」という抽象的な考えを、具体的で目に見えるものにしてくれます。だからこそ、コンピューターサイエンスの授業やコーディングのチュートリアル、文字エンコーディングについての練習問題に登場します。「Hi」が 01001000 01101001 に変わる様子を見ることは、定義だけを読むよりはるかにうまく、バイトとは何かをわかりやすくしてくれます。
教育以外でも、この変換はパズルや脱出ゲーム、capture-the-flag(CTF)のチャレンジに登場し、そこでは1と0の並びが短いメッセージを隠す一般的な手段になっています。文字の正確なビットパターンを調べたり、特定の Unicode 記号が UTF-8 でどのようにエンコードされるかを確認したりしたいときの、低レベルのデバッグにも便利です。ただし、実際のデータ保存では、コンピューターがこの変換を目に見えないところで処理しています——このツールは、それを理解し、確かめるためのものです。
よくある質問
テキストはどのようにバイナリへ変換されますか?
絵文字や英語以外のテキストにも対応していますか?
デコーダーはどのようなバイナリ形式を想定していますか?
変換エラーが出るのはなぜですか?
入力したデータはサーバーに送信されますか?
関連ツール
こちらの便利なツールもどうぞ