テキスト→2進数変換

テキストを2進数・16進数・8進数・10進数へ変換し、逆方向のデコードも可能。UTF-8 準拠で区切り文字とゼロ埋めを設定でき、すべてブラウザ内で完結します。

テキストと2進数・16進数・8進数・10進数を相互変換します。 両方のパネルが編集可能なので、テキストの符号化も、符号化済み文字列を貼り付けての復号もできます。UTF-8 バイト単位で処理するため、アクセント付き文字・漢字かな・絵文字も往復して元に戻ります。

テキストがバイトになる仕組み

文字とバイトは別物

文字は抽象的な概念で、バイトは 8 ビットの記憶単位です。両者を変換するには文字符号化が必要です。本ツールは、ウェブの 98% 以上を占める UTF-8 を使用します。UTF-8 では ASCII 範囲の A-Z、a-z、0-9 と一般的な記号がちょうど 1 バイトなので、A01000001 です。アクセント付きラテン文字とギリシャ文字は 2 バイト、多くの漢字・かなは 3 バイト、絵文字は 4 バイトになります。

往復変換で重要になる理由

古いテキスト→2進数ツールは charCodeAt を呼んで 8 ビットに切り捨てます。純粋な ASCII では動作しますが、それ以外はすべて静かに壊れ、é は別の文字か置換文字として戻ってきます。本ツールは実際の UTF-8 バイトを符号化するため、漢字と絵文字を含む文字列も入力どおりに復号されます。

基数の選び方

  • 2進数は生のビットパターンを表示します。符号化の仕組みを説明したり、ビット単位のプロトコルをデバッグしたりするのに向きます。
  • 16進数が実用上の既定です。1 バイトが 2 桁なのでバイト境界が明確で、すべての16進エディタやパケットダンプで使われています。
  • 8進数は 3 ビットずつまとめる方式で、主に Unix の権限や一部の C のエスケープシーケンスで見られます。
  • 10進数は読み上げやすい一方、ビット構造は完全に見えなくなります。

区切り文字とゼロ埋め

ゼロ埋めを行うと各バイトの幅が揃うため(2進数は 8 文字、16進数は 2 文字)、区切り文字がなくても確実に分割できます。ゼロ埋めを外す場合は必ず区切り文字を残してください。そうしないと 110 が連結し、一意に復号できなくなります。復号時はスペース・カンマ・改行が混在していても受け付けます。

オープンソースに関する記載:ブラウザ内蔵の TextEncoder / TextDecoder API を使用しています。サードパーティライブラリは使用していません。

よくある質問

漢字 1 文字が 8 ビット × 3 組になるのはなぜですか?
UTF-8 は多くの漢字を 3 バイトで符号化し、各バイトが 8 ビットの 1 組になります。これは正しい動作であり、エラーではありません。
区切り文字のない2進数も復号できますか?
ゼロ埋めされていれば可能です。区切りが見つからない場合、復号側は固定幅での分割(2進数は 8 文字、16進数は 2 文字で 1 バイト)に切り替えます。
ASCII と UTF-8 のどちらを使っていますか?
UTF-8 です。純粋な ASCII 範囲では両者は同一なので英文の見た目は変わりませんが、UTF-8 はそれ以外の文字も正しく扱えます。
復号でエラーが出るのはなぜですか?
各グループは選択した基数で 0〜255 の値として解釈できる必要があります。256 が含まれる、2進数モードに英字が混ざる、基数の選択が違う、といった場合に発生します。
Base64 と同じですか?
異なります。Base64 は 3 バイトを 4 つの印字可能文字にまとめてデータを小さくします。本ツールは各バイトを選択した基数で個別に表示するため、冗長ですが人間が読めます。
テキストはどこかに送信されますか?
されません。符号化・復号ともブラウザ内蔵の TextEncoder と TextDecoder を使い、すべて端末内で完結します。