テキストはシステムの内部では文字のままではなく、1文字ごとに数字として扱われています。テキスト ⇄ バイナリ変換 はその事実をそのまま見せるツールです。テキストを入力すると、コンピュータが実際に扱う 0 と 1 のグループ列を返し、そのグループ列を元に戻して読みやすい文字列にもします。このガイドでは実例で変換の一連の流れを追跡し、出力を 8 ビットずつ読む方法、一部の文字が 8 ビット以上を必要とする理由、そして同一ファミリーの他のエンコーディングとの比較を説明します。
記事の構成は次の通りです。A・H・i を中心にコードポイントから 8 ビットグループへの変換の仕組みを追い、01001000 01101001 を Hi に読み戻し、スマイル顔絵文字が 8 ビットではなく 17 ビットを必要とする理由、逆方向変換とその唯一の失敗モード、そしてモールス符号・Base64・URL エンコーディング・文字列のエスケープに対してバイナリがどの位置に置かれるかを解説します。
テキストがバイナリになる仕組み:コードポイントと 8 ビットグループ
各文字は Unicode が割り当てた整数、コードポイントに対応します。変換はその整数を 2 進数で書き、先頭の 0 で 8 ビットに補完します。文字 A のコードポイントは 65 で、01000001 になります。H は 72 で 01001000、i は 105 で 01101001 なので、Hi はグループ間のスペース 1 つで 01001000 01101001 に変換されます。スペース自体のコードポイントは 32 で 00100000 になり、そのため原文とバイナリ出力は文字ごとに位置合わせられます。各文字が独立して 1 グループを生成するため、出力を 2 進数のリストと見ることもできます。他の進数との変換を頻繁に行う場合は、基数変換 が同じ考え方を 8 進、16 進、2 から 36 までの任意の基数に広げます。
出力を 1 バイトずつ読んで復元する
結果を読み戻すには、スペースで区切って各 8 ビットグループを数値に戻します。01000001 は 65、01001000 は 72、01101001 は 105 で、コード表を引くと A、H、i が得られ、先頭の文字を飛ばせば Hi です。テキストが長くなると手作業ではミスが入りやすいため、まずグループ数を数えましょう。グループ数は入力文字数(スペースを含む)と一致しなければなりません。文字カウント はちょうどその件数、スペース込みで報告するため、手で復元を始める前の簡単なクロスチェックになります。
8 ビットを超える Unicode コードポイント
8 ビットへの補完がカバーするのは 0 から 255 のクラシックな範囲で、Unicode はそれよりはるかに広いです。スマイル顔絵文字のコードポイントは 128512 で、バイナリ形式は 11111011000000000 の 17 ビット文字列で、1 バイトでは収まりません。変換は切り詰めもラップもしません。グループはコードポイントが要求する長さまで伸び、復元も同じ手順で読み戻します。プレーン ASCII と絵文字や CJK 文字が混ざったテキストでは、8 ビットグループと長いグループが混在します。コードポイント表示ではなくバイト単位の表示が必要なら、Hex/UTF-8/Base64変換 が各文字が UTF-8 バイトとしてどう格納されるかをそのまま見せてくれます。これは多くのプロトコルが実際に送信するレイヤーです。
バイナリからテキストへの変換
ツールをバイナリ → テキストのモードに切り替えてグループ列を貼り付けます。変換は空白で分割し、各グループを 2 進数として読んで文字にマッピングするため、01001000 01101001 は Hi に戻ります。複数行にまたがる貼り付けも問題ありません。スペースや改行の連続はすべて区切りとして扱われます。失敗モードは単純です。0 か 1 で始まらないグループは 2 進数としてパースできず、ツールは推測する代わりに「無効なバイナリ」エラーで止まります。これにより長い貼り付け中の 1 つのタイプミスが、その後の全文字を静かにずらすことを防げます。
バイナリが他のエンコーディングの中で占める位置
バイナリはこのファミリーの中で最も直接的なエンコーディングで、数字自体がデータです。他のエンコーディングは同じ情報を別の文字表に包みます。モールス符号エンコーダ/デコーダ は文字を点と横棒に写像し、各文字の記号価値のデモには適していますが、大文字小文字や多くの句読点を落としてしまうという別の意味で情報を持たない形式です。Base64 エンコーダ/デコーダ は 3 バイトを 4 文字にパックするため、メールや JSON を安全に通過できますが、結果は元の文字と 1 対 1 で対応しません。URLエンコーダ/デコーダ は URL が保持できないバイト(スペースや記号など)だけを書き換え、その他はそのまま残します。 エスケープ/アンエスケープ はコード中のテキストを扱い、引用符やバックスラッシュを引用符コンテキストでも無傷で残る系列に変えます。どの形式が合うかを判断することこそ、バイナリ出力が手伝う本題であることが多いです。
よくあるミスと回避法
復元失敗のほぼすべては 3 つのミスに集約されます。第一に、出力全体を 1 つの長い数ではなくグループのリストとして扱わないこと。01000001 01001000 は 2 文字で、16 ビットの値ではありません。第二に、手動編集で先頭の 0 を落とすこと。数値が変われば復元される文字も変わります。第三に、全グループが 8 ビットだと決めつけること。255 を超えるコードポイントを持つ絵文字などの文字は長いグループを生成し、復元側が期待するのはエンコード側が書いた通りの長さです。スペース、先頭の 0、グループ境界を残せば、両方向ともきれいに往復します。