首页 / 教程文章 / Base64 的 = 补位:为什么结尾会有一两个等号

Base64 的 = 补位:为什么结尾会有一两个等号

发布于 2026-08-22 16:00:00 · 0 阅读 · 标签:Base64,编码,补位,开发者

Base64 以 3 字节为一组编码成 4 字符,输入不足 3 的倍数时用 = 补齐。讲清补位原理、解码行为与 URL Safe 变体的差异。

一、3 对 4 的数学关系

Base64 字符表 64 个字符 = 6 bit 信息量;原始数据按字节算 8 bit。最小公倍数 24 bit = 3 字节 ↔ 4 字符。编码器每吃 3 个字节输出 4 个字符,严丝合缝。

二、补位的两种情况

输入长度不是 3 的倍数时:

所以 Base64 结果长度永远是 4 的倍数,= 只出现在结尾,最多两个。

三、解码端的行为

四、URL Safe 变体

标准 Base64 里的 +/= 在 URL、文件名里是特殊字符,于是有 URL Safe Base64:

JWT、数据库主键短 ID(如 YouTube 视频 ID 风格)都用这套变体。两套字母表不通用,解码前要确认变体,否则报错或解出乱数据。

在线体验

不用装任何环境,直接用本站Base64 编解码工具在线操作,数据都在浏览器本地处理,方便又安全。

常见问题

Base64 结果一定以 = 结尾吗?

不一定。输入长度恰是 3 的倍数时没有 =。是否出现 = 以及出现几个,只取决于输入长度 mod 3。

JWT 里为什么看不到 = ?

JWT 采用 URL Safe Base64 并省略填充字符 =,三个段都是这种变体,解码时按字符数自动补位。

= 在正则里怎么匹配 Base64 ?

常见写法 ^[A-Za-z0-9+/]{4}([A-Za-z0-9+/]{4})*({0,2}=|={0,2})$ 之类容易出错,稳妥做法:先匹配字符集再校验长度是否 4 的倍数,= 只允许在末尾。

更多文章