阅读 base64 wiki后…
我试图弄清楚公式是 如何工作的:
给定一个长度为 的字符串n,base64 长度将为
n
这是:4*Math.Ceiling(((double)s.Length/3)))
4*Math.Ceiling(((double)s.Length/3)))
我已经知道 base64 长度必须是%4==0让解码器知道原始文本长度是多少。
%4==0
序列的最大填充数可以是=或==。
=
==
wiki :每个输入字节的输出字节数约为 4 / 3(33% 开销)
问题:
上面的信息如何 与输出长度一致 ?
每个字符用于表示 6 位 ( log2(64) = 6)。
log2(64) = 6
因此使用 4 个字符来表示4 * 6 = 24 bits = 3 bytes.
4 * 6 = 24 bits = 3 bytes
所以你需要4*(n/3)chars 来表示n字节,这需要四舍五入到 4 的倍数。
4*(n/3)
四舍五入到 4 的倍数后未使用的填充字符数显然是 0、1、2 或 3。