【发布时间】:2011-05-18 08:59:54
【问题描述】:
可能重复:
Why does base64 encoding requires padding if the input length is not divisible by 3?
引用Wikipedia:
...这些填充字符必须然后 解码时被丢弃但仍然 允许计算有效 未编码文本的长度,当它的 输入二进制长度不会是 3 个字节的倍数。 ...
但是即使去掉填充字符,也可以很容易地完成原始数据长度的计算。
| Encoded
|--------------------------------------
Raw Size | Total Size | Real Size | Padding Size
1 | 4 | 2 | 2
2 | 4 | 3 | 1
3 | 4 | 4 | 0
4 | 8 | 6 | 2
5 | 8 | 7 | 1
6 | 8 | 8 | 0
7 | 12 | 10 | 2
8 | 12 | 11 | 1
9 | 12 | 12 | 0
10 | 16 | 14 | 2
.
.
.
因此,鉴于实际编码大小(第三列),您始终可以正确猜测填充大小是多少:
PaddedSize = 4 * Ceil (RealSize / 4)
所以理论上,不需要填充。算法会处理它。考虑到 Base64 编码是一种流行的行业标准,它被用于许多应用程序和设备中。这些将受益于减少的编码大小。那么问题来了,为什么在 Base64 编码中使用填充?
【问题讨论】:
-
@Ignacio:不过,这个问题并不能很好地解释为什么。
-
我认为只要在问题中提供了足够的信息并且以不同的角度提出问题,就可以允许一些重复 (blog.stackoverflow.com/2010/11/…)。
标签: optimization encoding base64