Base64 的原理其实很直观,核心就一句话:把每 3 个字节(24 位)拆成 4 组 6 位,再映射到 64 个可打印字符。

为什么是 64

6 位二进制可以表示 0-63 共 64 个值,正好对应 A-Z、a-z、0-9、+、/ 这 64 个字符,所以叫 Base64。这样所有输出都落在安全可打印的 ASCII 范围内,可以畅通无阻地穿过只认文本的通道。

编码步骤

  1. 把输入按 3 字节一组分组,共 24 位
  2. 把 24 位按每 6 位切分为 4 组
  3. 每组补零后得到一个 0-63 的数值
  4. 用数值查表,得到对应的 Base64 字符

等号与体积

当输入不是 3 的倍数时,末尾用 0 补齐并用 = 填充空位,所以结尾常出现 = 或 ==。因为 3 字节变成 4 个字符,输出体积约增大 33%,这是 Base64 在文本通道里传输的代价。

以 "Man" 为例,三个字符恰好一组,编码结果 TWFu,没有等号。