文字转二进制的原理
文字转二进制分两步:先用字符编码把每个字符变成数字,再把每个数字写成以 2 为底的 8 位字节。字母 H 的编码是 72,72 写成二进制就是 01001000。
把数字写成二进制,就是把它拆成 2 的幂之和:128、64、32、16、8、4、2、1。72 = 64 + 8,所以 64 和 8 这两位是 1,其余是 0。开头的 0 要保留,让每个字节都正好是 8 位,这样解码时才能准确地切回字符。
本工具使用网页通用的 UTF-8 编码。英文的结果和 ASCII 完全相同;中文等其他字符会占 2 到 4 个字节,所以转换出的二进制总能完整还原成原文。
中文名字怎么转成二进制?
在上方输入你的名字,复制结果即可。以「李华」为例,每个汉字在 UTF-8 中占 3 个字节:
| 汉字 | 码点 | 二进制(UTF-8) |
|---|---|---|
| 李 | U+674E | 11100110 10011101 10001110 |
| 华 | U+534E | 11100101 10001101 10001110 |
英文名则是每个字母一个字节,而且区分大小写:大写字母以 010 开头,小写字母以 011开头。名和姓之间的空格也是字符,对应 00100000。
每个字符占几个字节?
在 UTF-8 中,不同字符占用的字节数不同,所以输入框上方显示的字节数可能比字符数多。
| 字符 | 字节 | 位数 | 二进制 |
|---|---|---|---|
| A | 1 | 8 | 01000001 |
| é | 2 | 16 | 11000011 10101001 |
| 中 | 3 | 24 | 11100100 10111000 10101101 |
| 😀 | 4 | 32 | 11110000 10011111 10011000 10000000 |
如果作业要求「ASCII 二进制」,把编码切换为 ASCII 即可。此时每个字节都以 0 开头,汉字、é、emoji 等 ASCII 无法表示的字符会被逐一标出。
如何选择分隔符和输出格式?
「分隔符」决定字节之间用什么隔开。空格最容易阅读,但有些谜题或程序需要别的格式:
- 空格:
01001000 01101001 - 无:
0100100001101001,连成一整串 - 逗号:
01001000,01101001,方便粘贴进表格或代码 - 换行:每行一个字节,适合较长的内容
「输出」用来切换进制。同样是 “Hi”,十六进制是 48 69,十进制是 72 105。程序员偏爱十六进制,因为两位十六进制数正好是一个字节。
文字转二进制的常见用途
- 礼物和纪念品:把名字或纪念日写成二进制,做成手链、杯子或十字绣,每个 0 和 1 对应一颗珠子或一针。
- 解谜和密室游戏:把线索藏成二进制,让玩家用二进制转文字工具解开。
- 计算机课作业:核对手算的结果,借助逐字符拆解看清每一步。
- 编程调试:查看字符串的真实字节,找出隐藏字符或乱码问题。
常见问题
怎么把自己的名字写成二进制?
在上方输入名字,然后复制结果。英文名每个字母是一个 8 位字节,大小写不同结果也不同;中文名每个汉字一般是 3 个字节,共 24 位。
每个字符占多少位?
英文字母、数字和标点占 8 位(1 个字节)。在 UTF-8 中,带重音的字母占 16 位,汉字占 24 位,大多数 emoji 占 32 位。
空格也会转换成二进制吗?
会。空格是编码为 32 的字符,对应 00100000。如果省略空格,解码时单词就会连在一起。
可以不加空格,或者输出十六进制吗?
可以。把「分隔符」设为「无」可以得到连续的一整串,也可以选逗号或换行;把「输出」改为十六进制、十进制或八进制即可切换进制。