Base64 编码为何增大数据量
解释 Base64 编码原理及其导致数据量增加 33% 的原因
问题
Base64 编码图片后,为什么会让数据量变大?
解答
Base64 使用 64 个基本 ASCII 字符对数据进行重新编码。编码过程如下:
编码原理
- 将数据拆分成字节数组,每 3 个字节为一组
- 将这 3 个字节(24 位)重新分成 4 组,每组 6 位
- 在每组的最高位前补两个 0,凑足 8 位(1 字节)
- 这样 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 字节的数据会用
=填充
目录