二进制转文字的原理
二进制转文字时,每次读取 8 位。8 个比特组成一个字节,表示 0 到 255 之间的一个数字,每个数字代表一个字符。例如01001000 等于 72,而 72 是大写字母 H 的编码。
数字和字符之间的对应关系由字符编码决定。英文用的是 ASCII,A 是 65,a 是 97;中文、emoji 以及其他语言用的是 UTF-8,一个字符可能占 2、3 或 4 个字节,常用汉字一般占 3 个字节。本工具按 UTF-8 解码,而 UTF-8 本身兼容 ASCII,所以中英文都不需要额外设置。
转换在你的浏览器里实时完成,内容不会发送到任何服务器,所以解码私密信息也很安全;页面加载完成后,断网也能使用。
支持哪些二进制格式?
二进制的写法五花八门,下面这些格式都可以直接粘贴,不用事先整理:
- 用空格分隔字节(最常见):
01001000 01101001。 - 连成一整串,会从左往右按 8 位切分:
0100100001101001。 - 用逗号、分号、制表符或换行分隔字节。
- 7 位一组(省略了开头的 0):
1001000 1101001照样能读出 “Hi”。 - 带
0b前缀,这是很多编程语言里的写法。 - UTF-8 多字节字符,中文、emoji 等都能还原成正确的字符。
如果你手上的是十六进制、十进制或 Base64,请使用能自动识别格式的二进制解码器。
二进制转文字示例
下表是几段二进制以及它们对应的文字。点击上方的示例,或复制表中任意一行粘贴到翻译器里,就能看到每个字节的拆解。
| 二进制 | 文字 |
|---|---|
| 11100100 10111101 10100000 11100101 10100101 10111101 | 你好 |
| 11101000 10110000 10100010 11101000 10110000 10100010 | 谢谢 |
| 01001000 01100101 01101100 01101100 01101111 | Hello |
| 01000111 01101111 01101111 01100100 00100000 01101100 01110101 01100011 01101011 00100001 | Good luck! |
注意「你好」两个字用了 6 个字节:每个汉字 3 个字节,合计 48 位。二进制本身没有语言之分,原文是中文就解出中文,是英文就解出英文。
二进制无法转换怎么办?
遇到无法解码的部分时,翻译器会列出出错的分组,其余部分照常转换。常见原因和解决办法如下:
- 某一组位数不对。9 位一组通常是两个字节连在了一起,或者某位数字重复了。找到提示中的那一组,拆开或删掉多余的位即可。
- 混入了 0 和 1 以外的字符。手动录入时,字母 O、字母 l 或句点很容易混进来,把它们改成 0 或 1。
- 结果里出现 �。说明字节不是有效的 UTF-8:某个汉字的字节缺了一个,或者这段二进制本来就不是文字。
- 结果是一堆乱码。连续长串中前面多了或少了一位,后面所有字节都会错位。在字节之间加上空格,就能找出出错的位置。
需要反向转换?用文字转二进制工具,可以把任意文字变成二进制代码。
常见问题
怎么把二进制转换成文字?
把二进制粘贴到上方输入框,文字会立即显示。每 8 位一组是一个字节,对应一个字符,例如 01001000 01100101 01101100 01101100 01101111 就是 "Hello"。
二进制之间一定要加空格吗?
不需要。空格、逗号、换行都可以,连成一整串的 0 和 1 也没问题,会从左往右按 8 位切分。
每组是 7 位而不是 8 位怎么办?
7 位一组是省略了开头 0 的 7 位 ASCII。无论分开写还是连在一起,翻译器都能正确读取。
结果里为什么会出现 � 符号?
说明这些字节组不成有效的 UTF-8 文字。通常是少了某个字节、某一组写错了,或者这段二进制本来就不是文字,比如是图片的一部分。