Base64 编码规则:3 个字节变 4 个字符,为什么体积涨三分之一
Base64 只做一件事:把任意字节变成只含 64 个安全字符的文本。代价是体积固定增加 1/3——3 个字节变成 4 个字符。它不加密、不压缩,任何人拿到都能解回原文。
为什么是 6 位一组
64 个字符正好能用 6 位二进制索引(2⁶ = 64)。把字节流按 6 位切开,每段查表得到一个字符:
原始 3 字节 = 24 位
24 ÷ 6 = 4 段
4 段 → 4 个字符
3 字节进、4 字符出,所以体积是原来的 4/3,约 +33.3%。这个比例是固定的,与内容无关。
字母表是 A-Z a-z 0-9 + /,共 64 个。+ 和 / 在 URL 里有特殊含义,于是又有了把它们换成 - 和 _ 的 URL-safe 变体。
等号是什么:填充,不是数据
如果原始字节数不是 3 的倍数,最后一组会不足 24 位,用 0 补齐,再在末尾加 = 表示「补了几个字节」:
- 余 1 字节 → 补 2 个
=(如YQ==) - 余 2 字节 → 补 1 个
=(如YWI=) - 整除 → 不补
所以 = 的数量只表示原始长度模 3 的余数,不携带任何内容。很多场景会省略它,解码时按长度补回即可——这个工具在解码前会自动补。
它不能用来「保护」数据
Base64 没有密钥、没有混淆,任何人都能解开。把它当加密用是常见误解,尤其在配置文件里「把密码 Base64 一下」——等同于明文。
需要保护数据请用真正的加密(如这个站群里的文件加密工具,AES-256-GCM + PBKDF2),Base64 只负责「让二进制能塞进文本协议」。
什么时候必须用它
- 邮件附件:SMTP 只传 7 位 ASCII,二进制附件必须 Base64。
- Data URL:
data:image/png;base64,...把小图标内联进 CSS/HTML。 - JSON 里的二进制:JSON 没有字节类型,只能转成字符串传。
- HTTP Basic 认证:
Authorization: Basic base64(user:pass)。
共同点都是「通道只接受文本」。不需要文本通道时,直接用二进制更省。
上面这些都不用装软件,也不用注册:打开页面就能用。
打开 Base64 编码解码 →常见问题
Base64 会让文件变小吗?
不会,只会变大 33%。它是编码不是压缩。有时看到 Base64 字符串比原文件「短」,是因为原文件被 gzip 压缩过再编码,压缩发生在 Base64 之前。
等号可以去掉吗?
可以。填充只用于对齐,解码器按长度能算出该补几个。这个工具在解码前会自动补回,所以带不带等号都能解。
Base64 和 Base32、Base58 有什么区别?
字母表大小不同。Base32 只用大写字母与数字 2-7,体积涨 60%,但对大小写不敏感、适合人读;Base58 去掉了 0 O I l 等易混字符,用于比特币地址。Base64 体积最小,最通用。