テキスト→2進数 / ASCII変換ツールとは?
このツールは、入力したテキストを2進数表現に変換します。コンピューターは文字を「文字エンコーディング」という仕組みを使って数値として保存しています。基本的な英字・数字・記号の場合、そのエンコーディングがASCIIです。各文字には数値コードが割り当てられており、このツールではそのコードを8ビットの2進数文字列(0と1が8桁)として表示します。さらに10進ASCIIコードと16進数も同時に表示するので、どの基数でも結果を照らし合わせて確認できます。
使い方
入力欄にテキストを入力するか貼り付けて送信するだけです。メインの欄には、1文字につき8ビットのまとまりをスペースで区切った2進数文字列がすべて表示されます。その下の表には、対応する10進ASCIIコードと16進数の値、さらに文字数と合計ビット数が一覧で表示されます。スペースや記号も1文字としてカウントされ、たとえば半角スペースはASCIIコード32です。
計算式の仕組み
各文字cについて、その文字コード(JavaScriptのcharCodeAtが返す値と同じもの)を取得し、その整数を2進数に変換します。そして桁数が8になるように左側を0で埋めます。
$$c \rightarrow \text{pad}_8(\text{bin}(\text{charCode}(c)))$$
たとえば、文字AのASCIIコードは65で、2進数では1000001、8桁に揃えると01000001になります。合計ビット数 = 8 × 文字数 です。
$$\text{bits} = 8 \times n_{chars}$$
計算例
単語Hiを変換してみましょう。「H」はASCIIコード72 → 2進数01001000 → 16進数48。「i」はASCIIコード105 → 2進数01101001 → 16進数69。したがって「Hi」は2進数で01001000 01101001、10進数で72 105、16進数で48 69となり、2文字で合計\(8 \times 2 = 16\)ビットになります。
ASCII文字参照表
標準ASCIIは各文字に0~127の数値を割り当てます。このコンバーターでは、各文字の10進数コードを8ビットの2進値(8ビットを埋めるため左ゼロパディング)および2桁の16進数値に変換します。下の表は、よく使用される印字可能文字を示しています。
| 文字 | 10進数 | 8ビット2進数 | 16進数 |
|---|---|---|---|
| (スペース) | 32 | 00100000 | 20 |
| ! | 33 | 00100001 | 21 |
| 0 | 48 | 00110000 | 30 |
| 1 | 49 | 00110001 | 31 |
| 5 | 53 | 00110101 | 35 |
| 9 | 57 | 00111001 | 39 |
| : | 58 | 00111010 | 3A |
| ? | 63 | 00111111 | 3F |
| @ | 64 | 01000000 | 40 |
| A | 65 | 01000001 | 41 |
| B | 66 | 01000010 | 42 |
| M | 77 | 01001101 | 4D |
| Z | 90 | 01011010 | 5A |
| a | 97 | 01100001 | 61 |
| b | 98 | 01100010 | 62 |
| m | 109 | 01101101 | 6D |
| z | 122 | 01111010 | 7A |
例えば、大文字Aは10進数コード65を持ち、2進数では1000001で、8ビットにパディングすると01000001になります。「Hi」という単語は1文字として01001000 01101001にエンコードされます。
重要な用語の説明
- ビット
- デジタルデータの最小単位で、0または1の単一値を保持します(2進数字)。
- バイト
- 8ビットのグループです。1バイトは256個の異なる値を表現できます(\(2^8 = 256\)),これは拡張ASCII文字1文字を保存するのに正確に十分です。
- ASCII
- アメリカ標準情報交換コード — 128文字(コード0~127)、文字、数字、句読点、制御コードを含めて、数値にマップする文字符号化標準です。
- ユニコード
- ASCIIをはるかに超えて、ほぼすべての書記体系、記号、絵文字をカバーする普遍的な文字標準です。最初の128個のユニコードコードポイントはASCIIと同一です。
- コードポイント
- 文字セット内の文字に割り当てられた数値です。文字「A」の場合、コードポイントはASCIIとユニコードの両方で65です。
- 2進数
- 0と1の数字だけを使用する2進法(基数2)です。各位置は2の累乗(1、2、4、8、…)を表します。
- 10進数
- 日常の計算に使用される10進法(基数10)で、数字0~9で、位置は10の累乗を表します。
- 16進数
- 数字0~9と文字A~Fを使用する16進法(基数16)です。1つの16進数字は正確に4ビットを表し、2つの16進数字は1バイトを表します。
- パディング/左パディング
- 2進値の前に先頭ゼロを追加して、すべての文字が均一な幅を占めるようにします。ASCIIバイトは8ビットに左パディングされます — 例えば、コード65(2進数1000001)は01000001になります。
2進数、10進数と16進数の変換表
下の表は、同じ値が10進数(基数10)、2進数(基数2)、16進数(基数16)にどのように表示されるかを示しています。2の累乗を増やすたびに2進数字が1つ増えることに注意してください。また、4ビットの2進数がきれいに1つの16進数字にマップされることに注意してください。
| 10進数 | 2進数(8ビット) | 16進数 |
|---|---|---|
| 0 | 00000000 | 00 |
| 1 | 00000001 | 01 |
| 2 | 00000010 | 02 |
| 3 | 00000011 | 03 |
| 4 | 00000100 | 04 |
| 5 | 00000101 | 05 |
| 6 | 00000110 | 06 |
| 7 | 00000111 | 07 |
| 8 | 00001000 | 08 |
| 9 | 00001001 | 09 |
| 10 | 00001010 | 0A |
| 11 | 00001011 | 0B |
| 12 | 00001100 | 0C |
| 13 | 00001101 | 0D |
| 14 | 00001110 | 0E |
| 15 | 00001111 | 0F |
| 16 | 00010000 | 10 |
| 32 | 00100000 | 20 |
| 64 | 01000000 | 40 |
| 128 | 10000000 | 80 |
| 255 | 11111111 | FF |
確認として、10進数255は単一バイトが保持できる最大値です。その16進数形式はFFで、2進数形式は8ビットすべてが1に設定されます。同様に、10進数64は2進数1000000に変換され、01000000にパディングされます。
よくある質問
英語以外の文字にも対応していますか? 標準のASCIIはコードポイント0~127をカバーしています。127を超える文字(アクセント付き文字や絵文字、また日本語のひらがな・漢字なども含む)は、そのUnicodeコードポイントが使われるため、8ビットを超えることがあり、標準ASCIIには収まりません。
なぜ1文字あたり8ビットなのですか? 1バイトは8ビットで、ASCIIは伝統的に1バイトに収まります。そのため8ビット単位でまとめるのが一般的な表現方法となっています。
2進数からテキストに戻せますか? このツールはテキストを2進数に変換するためのものです。逆変換する場合は、2進数を8ビットごとに区切り、各値を対応するASCII文字に戻してください。