ASCII→2進数変換ツールとは?
このツールは、入力したテキストをバイナリ(2進数)コードへと変換します。1文字ごとにASCIIテーブルを参照して対応する数値(標準ASCIIでは0〜127)を求め、その数値を8ビットの2進数で書き出します。こうして得られたバイト列をつなげると、メッセージ全体のバイナリ表現が完成します。これはまさに、コンピュータが内部でテキストを保存している仕組みそのものです。
使い方
入力欄に任意のテキストを入力するか、コピー&ペーストしてください。バイトとバイトの間に区切りのスペースを入れる(読みやすくなります)か、区切りなし(連続したビット列)にするかを選びます。すると、バイナリ文字列全体に加えて、文字数と合計ビット数が出力されます。
計算の仕組み
各文字cについて、まずその10進数のコードであるASCII(c)を求めます。次にその値を2進数に変換し、8ビットになるまで左側を0で埋めます。たとえば「H」のASCIIコードは72で、2進数では1001000、これを8ビットに揃えると01001000になります。すべての文字のバイトを連結したものが最終結果です。
$$\text{Binary} = \bigoplus_{i=1}^{n}\ \operatorname{pad}_{8}\!\left(\text{bin}\big(\operatorname{ASCII}(\text{Text}_i)\big)\right)$$
具体例
「Hi」という単語を例に考えてみましょう。「H」= 72 = 01001000、「i」= 105 = 01101001 です。区切りにスペースを使うと、出力は 01001000 01101001 となります。文字数は2、合計ビット数は16ビットです。
$$\text{「H」} = 72 = 01001000$$
$$\text{「i」} = 105 = 01101001$$
テキストをバイナリに手作業で変換する方法
テキストを8ビットバイナリに変換するのは文字ごとのプロセスです。各文字は個別に1バイトに変換され、バイトは順に結合されます。以下は完全な手順で、文字Kで図解されています。
- 1文字を取り出す。テキストを左から右へ、1文字ずつ処理します。文字
Kを変換します。 - そのASCIIの10進数コードを調べる。上記の参照表を使用して、
Kの10進数ASCIIコードは75です。 - 10進数コードを2進法に変換する。2で繰り返し割り、余りを下から上へ読みます:
75 ÷ 2 = 37 余り1;37 ÷ 2 = 18 余り1;18 ÷ 2 = 9 余り0;9 ÷ 2 = 4 余り1;4 ÷ 2 = 2 余り0;2 ÷ 2 = 1 余り0;1 ÷ 2 = 0 余り1。
余りを最後から最初の順に読むと1001011が得られます。位置の値で検証できます:\(64 + 8 + 2 + 1 = 75\)、2進法では\(1001011_2 = 75_{10}\)1001011です。 - ゼロで左側を埋めて8ビットにする。生のバイナリ値は8桁より短い場合があります。バイトがちょうど8ビット幅になるまで先頭にゼロを追加します:
1001011→01001011。このスキームでは、すべての文字が正確に1バイト占有するため、このパディングステップはすべてのバイトを同じ長さにし、デコード可能にします。 - バイトを連結する。ステップ1~4をすべての文字について繰り返し、結果を順に結合します。単語
Kitの場合:K=01001011、i=01101001、t=01110100、結果は010010110110100101110100です。セパレーターをスペースに設定すると、同じ出力は01001011 01101001 0111010001001011 01101001 01110100と表示されます。
逆のプロセスを行うには、バイナリ文字列を8ビット単位に分割し、2進法からテキストへのデコーダーを使用して各バイトを文字に戻します。
よくある質問
なぜ1文字あたり8ビットなのですか? 標準ASCIIは7ビットで表現できますが、1バイト(8ビット)はコンピュータにおける記憶の基本単位です。そのため各文字を8ビットに揃えて(パディングして)扱います。
スペースや記号にも対応していますか? はい、対応しています。スペースはASCIIコード32(00100000)で、句読点などの記号もそれぞれ固有のコードを持っています。
アクセント付き文字や絵文字はどうなりますか? このツールは標準ASCIIを対象としています。コード127を超える文字はASCIIの範囲外であり、8ビットでは正しくエンコードできない場合があります。