什么是文本转二进制 / ASCII 转换器?
这个工具能把你输入的任意文字转换成对应的二进制表示。计算机是通过字符编码把文本以数字的形式存储起来的——对于基本的英文字母、数字和标点符号来说,这套编码就是 ASCII。每个字符都对应一个数字编码,本工具会把这个编码写成一段 8 位的二进制字符串(由 8 个 0 和 1 组成)。同时,转换器还会显示十进制的 ASCII 码和十六进制结果,方便你在不同进制下对照核对。
使用方法
在输入框中键入或粘贴你的文字,然后提交即可。主结果框会显示完整的二进制字符串,每个字符对应一组 8 位二进制数,组与组之间用空格隔开。下方的表格会列出对应的十进制 ASCII 码和十六进制值,并统计字符数量与总位数。需要注意的是,空格和标点符号同样算作字符——比如空格的 ASCII 码就是 32。
计算公式详解
对于每一个字符 c,我们先取出它的字符编码(也就是 JavaScript 中 charCodeAt 返回的数值),把这个整数转换为二进制(2 进制),再在左侧补 0,使其总长度达到 8 位。
举个例子,字母 A 的 ASCII 码是 65,对应的二进制是 1000001,补齐后即为 01000001。总位数 = 8 × 字符数量。
$$\text{bits} = 8 \times n_{chars}$$
实例演示
我们来转换单词 Hi。"H" 的 ASCII 码是 \(72\) → 二进制为 \(01001000\) → 十六进制为 \(48\)。"i" 的 ASCII 码是 \(105\) → 二进制为 \(01101001\) → 十六进制为 \(69\)。因此 "Hi" 转换后得到 01001000 01101001,十进制为 72 105,十六进制为 48 69,共 2 个字符、16 位。
ASCII 字符参考表
标准 ASCII 为每个字符分配一个从 0 到 127 的数字。在此转换器中,每个字符的十进制代码被转换为 8 位二进制值(左侧用零填充以填充 8 位)和两位十六进制值。下表列出了常用的可打印字符。
| 字符 | 十进制 | 8 位二进制 | 十六进制 |
|---|---|---|---|
| (空格) | 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 的十进制代码为 65,二进制为 1000001,填充到 8 位后变为 01000001。作为单个字符,单词"Hi"编码为 01001000 01101001。
关键术语说明
- 位
- 数字数据的最小单位,保存 0 或 1 的单个值(二进制数字)。
- 字节
- 8 位的组合。一个字节可以表示 256 个不同的值(\(2^8 = 256\)),这恰好足以存储一个扩展 ASCII 字符。
- ASCII
- 美国信息交换标准代码 — 一种字符编码标准,将 128 个字符(代码 0–127)映射到数字,包括字母、数字、标点符号和控制代码。
- Unicode
- 一种通用字符标准,远超 ASCII 的范围,涵盖几乎所有书写系统、符号和表情符号。前 128 个 Unicode 代码点与 ASCII 相同。
- 代码点
- 在字符集中分配给字符的数值。对于字母"A",代码点在 ASCII 和 Unicode 中都是 65。
- 二进制
- 以 2 为基数的数字系统,仅使用数字 0 和 1。每个位置代表 2 的幂(1、2、4、8、…)。
- 十进制
- 日常计数中使用的以 10 为基数的数字系统,数字为 0–9,位置代表 10 的幂。
- 十六进制
- 以 16 为基数的数字系统,使用数字 0–9 和字母 A–F。一个十六进制数字恰好代表 4 位,所以两个十六进制数字代表一个字节。
- 填充/左填充
- 在二进制值的前面添加前导零,使每个字符占据统一的宽度。ASCII 字节左填充到 8 位 — 例如,代码 65(二进制 1000001)变为 01000001。
二进制、十进制和十六进制转换表
下表显示相同的值如何以十进制(10 进制)、二进制(2 进制)和十六进制(16 进制)显示。注意 2 的每个幂如何增加一个二进制数字,以及每 4 个二进制位如何完美地映射到单个十六进制数字。
| 十进制 | 二进制(8 位) | 十六进制 |
|---|---|---|
| 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 |
作为检查,十进制 255 是单个字节可以保存的最大值;其十六进制形式为 FF,其二进制形式是所有八位都设置为 1。同样,十进制 64 转换为二进制 1000000,填充到 01000000。
常见问题
它能处理非英文字符吗? 标准 ASCII 只涵盖编码点 0–127。编码点超过 127 的字符(如带重音符号的字母、表情符号等)会使用它们的 Unicode 编码点,这些数值可能超过 8 位,无法纳入标准 ASCII 范围。
为什么每个字符是 8 位? 一个字节(byte)等于 8 位(bit),而 ASCII 传统上正好能装进一个字节,所以按 8 位分组就成了约定俗成的表示方式。
可以把二进制再转回文字吗? 本工具的功能是将文本转为二进制。如果想反向转换,只需把二进制按 8 位一组拆分,再将每组数值对应回相应的 ASCII 字符即可。