二进制转文本
将二进制代码解码还原为可读文本。
二进制转文本:每组二进制对应一个字符
这个二进制转文本工具在空格或换行处把输入拆开,把每一组当作一个数字,显示这个编码对应的字符。01001000 01101001 是 72 和 105,也就是 H 和 i,所以输出 Hi。
| 字符 | 编码 | 二进制 |
|---|---|---|
| A | 65 | 01000001 |
| a | 97 | 01100001 |
| 0(数字) | 48 | 00110000 |
| 空格 | 32 | 00100000 |
| 中 | 20013 | 100111000101101 |
大写和小写字母只差一位,即左数第三位:A 是 01000001,a 是 01100001。解出来的大小写不对,就检查这一位。
中文的二进制:只认一种写法
每一组二进制会被当作一个字符编码来读,工具不会把 UTF-8 的多个字节重新拼成一个字。这对中文影响很大,因为二进制里的中文常见两种写法:
- 每个字一组(字符编码)。本站的文本转二进制工具就是这么写的:“你好”写成
100111101100000 101100101111101,粘贴到这里能还原为“你好”。 - 每个字节一组(UTF-8)。很多程序和其他网站按字节输出,一个常用汉字占 3 个字节。“好”的 UTF-8 字节是
11100101 10100101 10111101,在这里会被解成 3 个字符 好,也就是乱码。
本工具无法解读第二种写法,遇到这种情况需要用支持 UTF-8 字节解码的程序处理。另外,生僻字和表情在文本转二进制时只保留了编码的前一半,所以无法完整还原。
组与组之间必须有分隔
每组之间要用空白隔开。多几个空格或换行没关系,开头的 0 也可以省略,所以 1001000 1101001 同样得到 Hi。
没有分隔时,整串会被当成一个数字。0100100001101001 会被读成编码 18537,也就是字符“䡩”,而不是 Hi。逗号也不能当分隔符:01001000,01101001 只得到 H,因为读到逗号就停了。如果拿到的是一长串纯英文的二进制,可以每 8 位插入一个空格再粘贴;中文按字编码时每组长度不固定(“中”就是 15 位),无法这样切分,需要原始数据本身带分隔。
输出空白或显示奇怪时
- 不是二进制的组,比如以 2 开头的数字,会变成一个看不见的字符,编码为 0,而且没有报错。输入框一开始填的是 42,所以输出起初看起来是空的。
- 小于 32 的编码是控制字符,不会显示。
00001010是换行,00001001是制表符。 - 多了或少了一位:如果各组是从一长串里切出来的,后面的每个字符都会错位。检查每组是不是都是 8 位。
常见问题
01001000 01100101 01101100 01101100 01101111 是什么意思?+
是 Hello。五组分别是编码 72、101、108、108 和 111。
二进制和 ASCII 是一回事吗?+
不完全是。ASCII 是一张编码表,给字母、数字和符号分配了 0 到 127 的编号;二进制只是书写这些编号的一种方式。所以二进制文本就是用二进制写出来的字符编码。
为什么中文二进制解出来是乱码?+
多半因为那段二进制是按 UTF-8 字节写的,每个汉字被拆成了 3 组。本工具每组只读一个字符,会把它们解成 好 这样的乱码。用本站文本转二进制工具生成的中文二进制可以正常还原。
文本怎么转成二进制?+
用本站的文本转二进制工具。它把每个字符写成一组至少 8 位的二进制,组与组之间用空格隔开,生成的结果可以直接粘贴回这里还原。