上传文件
  1. base64hub
  2. 其他进制编码
  3. 文本转二进制

文本转二进制:把字母变成 0 和 1

输入任意文本,即可看到它的二进制形式,每个字节一组 8 位:Hi 变成 01001000 01101001。默认用空格分隔字节;逗号、换行或不分隔,只需点一下。

免费 无需注册,不限次数 本地 不上传任何内容 5 种分隔方式,包括不分隔 更新于 2026年10月27日
输入 0字节 0 B输出 0

在你的浏览器中处理。此页面无法将你的数据发送到任何地方: 我们如何确认

如何把文本转换为二进制

  1. 在 输入 · 文本 中输入或粘贴文本。二进制会立即显示在 输出 · 二进制 中。
  2. 输出下方的 分隔符 决定字节之间放什么:空格、无、, 、, 或换行。
  3. 输入下方的 字符集 决定字符如何变成字节。默认是 UTF-8,对英文文本来说与 ASCII 相同。
  4. 点击 复制输出 或 下载 保存结果。要转换回来,把二进制粘贴到 二进制转文本,或者使用 二进制 → 文本 切换方向。

一个单词,逐个字母拆解

Hello 的二进制是 01001000 01100101 01101100 01101100 01101111。每一组的来历如下:

字母十进制二进制
H7201001000
e10101100101
l10801101100
l10801101100
o11101101111

十进制数是字符的 ASCII 码;二进制是同一个数的二进制写法,补足到 8 位。注意 H 和 h(01101000)只有左起第三位不同。ASCII 中每一对大小写字母都是这样,所以程序只需一次位运算就能转换大小写。

分隔方式

同样的两个字母 Hi,在每种 分隔符 设置下的结果:

分隔符输出
空格01001000 01101001
无0100100001101001
,01001000, 01101001
,01001000,01101001
换行每行一个字节

空格分隔最容易阅读和核对。谜题或协议规范中的位串需要不分隔的形式,但只要丢掉一位,后面的内容就全部错位,所以请保留一份带空格的副本。逗号形式可以粘贴到代码或电子表格单元格中;不过对于真正的源代码,Base64 转字节数组 会生成规范的数组字面量。

ASCII 以外的字符

普通的英文字母、数字和标点各占一个字节。其他字符在 UTF-8 中更长,转换器会写出每一个字节:

文本字节数二进制(UTF-8)
ñ211000011 10110001
中311100100 10111000 10101101
🙂411110000 10011111 10011001 10000010

切换 字符集,位也会随之改变。在 UTF-16LE 中,Hi 变成 01001000 00000000 01101001 00000000,每个字母两个字节,零字节在后。如果别人对同一段文本给出的二进制与你的不同,首先比较字符集。

文本、二进制和 Base64

二进制是书写字节最直白的方式,也是最长的:每个字节 8 个字符,外加分隔符。Base64 写同样的字节,每个字节只需约 1.33 个字符,所以它被用来在文本格式中携带文件和密钥。Hi 的 Base64 是 SGk=,文本转 Base64 可以直接生成。想看 8 位一组如何重新分成 Base64 使用的 6 位小块,可以用 Base64 转二进制 转换,并阅读 Base64 的工作原理。

在代码中把文本转为二进制

" ".join(f"{b:08b}" for b in "Hi".encode("utf-8"))   # '01001000 01101001'
Array.from(new TextEncoder().encode("Hi"),
  b => b.toString(2).padStart(8, "0")).join(" ");      // '01001000 01101001'

08b 格式和 padStart(8, "0") 负责补前导零。没有它们,H 会输出成 1001000,各组就对不齐了。更多字符串和字节处理见 Python 和 JavaScript 页面。

常见问题

"hello" 的二进制是什么?

01101000 01100101 01101100 01101100 01101111。首字母大写的 Hello 只有第一组变化,变成 01001000。

怎样用二进制写出我的名字?

把名字输入到输入框,复制输出即可。每个字母变成 8 位数字;名和姓之间的空格变成 00100000。中文名字在 UTF-8 中每个字占 3 个字节,也就是 24 位。

为什么每个字符正好是 8 位?

计算机以字节存储文本,一个字节有 8 位。转换器会给每个字节补上前导零,所以 A(65)写成 01000001,而不是 1000001。

为什么有些字符会得到 16 位或 32 位?

因为它们在 UTF-8 中需要不止一个字节。ñ 占两个字节,中 占三个,emoji 占四个。在 UTF-16 中,连普通字母也占两个字节。