Base64 编码为何增大数据量

解释 Base64 编码原理及其导致数据量增加 33% 的原因

问题

Base64 编码图片后,为什么会让数据量变大?

解答

Base64 使用 64 个基本 ASCII 字符对数据进行重新编码。编码过程如下:

编码原理

  1. 将数据拆分成字节数组,每 3 个字节为一组
  2. 将这 3 个字节(24 位)重新分成 4 组,每组 6 位
  3. 在每组的最高位前补两个 0,凑足 8 位(1 字节)
  4. 这样 3 个字节就被编码成了 4 个字节

字符表

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/

编码示例

原始数据: [11010101] [10110011] [01001110]  (3 字节 = 24 位)

重新分组: [110101] [011011] [001101] [001110]  (4 组,每组 6 位)

补齐字节: [00110101] [00011011] [00001101] [00001110]  (4 字节)

不足 3 字节的处理

当最后一组不够 3 个字节时:

  • 填充 1 到 2 个 0 字节
  • 编码完成后在结尾添加 1 到 2 个 = 作为填充标记

数据量计算

原始 3 字节 → 编码后 4 字节,增加比例为 4/3 ≈ 133.3%

实际增加量 = 133.3% - 100% = 33.3%

示例: 20MB 的数据经过 Base64 编码后约为 20MB × 1.333 = 26.67MB

关键点

  • Base64 将每 3 个字节编码为 4 个字节,数据量增加 33.3%
  • 编码过程是将 24 位数据重新分组为 4 组 6 位,每组补齐为 8 位
  • 使用 64 个可打印 ASCII 字符表示数据,便于在文本协议中传输二进制数据
  • 不足 3 字节的数据会用 = 填充