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

Base64 转二进制:查看每一位

粘贴 Base64,查看解码后字节的 8 位二进制分组。可以用来检查标志位和位字段,或者观察 Base64 如何把 6 位装进每个字符。

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

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

如何将 Base64 转换为二进制

  1. 把 Base64 粘贴到 输入 · Base64。换行、空格、data: 前缀、URL 安全的 - 和 _ 以及缺失的填充都可以接受。
  2. 每个解码后的字节以 8 位的形式显示在 输出 · 二进制 中。
  3. 在输出下方选择 分隔符:空格(默认)、无、, 、, 或换行。
  4. 点击 复制输出 或 下载 这些比特。保存字节 则会把解码后的数据另存为文件,扩展名根据内容确定。

方向切换 二进制 → Base64 或 二进制转 Base64 可以反向转换。

Base64 字符如何变成比特

每个 Base64 字符代表 6 位,即它在字母表中的位置,从 A = 0 到 / = 63。四个字符共 24 位,解码器把它们重新分成三个 8 位字节。以 SGkh 为例:

字符SGkh
值1863633
6 位010010000110100100100001

连起来就是 010010000110100100100001。按字节切分:

字节010010000110100100100001
十进制7210533
文本Hi!

所以 SGkh 就是 Hi!,二进制输出为 01001000 01101001 00100001。字符边界和字节边界每 24 位才对齐一次,所以一个错误的 Base64 字符可能会损坏相邻的两个字节。分步讲解 从编码器的角度演示了同样的过程。

填充与剩余的比特

当数据不是 3 字节的倍数时,最后一组就不完整。Hi 有 16 位,需要三个 Base64 字符(18 位)。多出的 2 位置为零,再用 = 把这一组补足为四个字符:

Base64承载的位数输出的字节
SGkh2401001000 01101001 00100001
SGk=18,其中 2 位是填充位01001000 01101001
SA==12,其中 4 位是填充位01001000

填充位永远不会出现在输出中。为什么会有 =,见 填充 页面。

按位查看在哪些场景有用

  • 协议和文件头经常把多个是或否的标志打包进一个字节。以二进制显示时可以直接读出这些位字段,不用在脑子里换算 hex 数字。
  • 要比较两个值,就把它们都解码,并把 分隔符 设为换行,逐行对比;单个翻转的位一眼就能看出来。
  • 在教学和解谜中,把 8 位字节和 6 位分组放在一起看,就能看出 33% 的体积开销从何而来。

超过几十个字节的数据,hex 更容易阅读:Base64 转 Hex 用四分之一的篇幅显示同样的字节。二进制输出每个字节占 8 个字符,外加分隔符,所以一百万个 Base64 字符(750,000 字节)会变成约 675 万个字符的二进制。输出框只显示前 200 万个字符;复制输出 和 下载 始终提供完整结果。

在代码中将 Base64 转为二进制

import base64
" ".join(f"{b:08b}" for b in base64.b64decode("SGkh"))
# '01001000 01101001 00100001'
Array.from(Buffer.from("SGkh", "base64"), b => b.toString(2).padStart(8, "0")).join(" ");
// '01001000 01101001 00100001'

如果要把解码后的字节写入二进制文件,在 Python 中用 open("out.bin", "wb").write(base64.b64decode(s)),在 Node 中用 fs.writeFileSync("out.bin", Buffer.from(s, "base64"))。Python 和 Node.js 页面有完整的文件示例。

常见问题

Base64 转二进制和 Base64 解码是一回事吗?

解码过程相同,只是显示方式不同。本页把字节写成 0 和 1。如果你想要的是以文件形式保存的字节,也就是“二进制”常见的另一种含义,请使用 Base64 转文件 或本页的 保存字节 按钮。

Base64 每个字符是 6 位,为什么每个字节显示 8 位?

输出显示的是字节,而一个字节是 8 位。Base64 则把同一串比特切成 6 位一段,所以 3 个字节(24 位)总是对应 4 个字符。

怎么得到不带空格的比特串?

把 分隔符 设为“无”。这样 SGk= 会输出一整串 0100100001101001。

填充位去哪儿了?

被丢弃了。在 SGk= 中,最后一个字符承载 6 位,但只有 4 位属于数据;另外 2 位是补足字符用的零,解码器会把它们丢掉。