Base64:空间使用量增长最糟糕的是什么?

如果一个服务器收到一个base64string,并想在转换之前检查它的长度,说它总是允许最终的字节数组为16KB。 转换为Base64string时(假设每个字符一个字节),16KB字节数组可能会变大多less?

Base64将每组三个字节编码为四个字节。 另外输出填充总是四的倍数。

这意味着大小为n的string的base-64表示的大小是:

ceil(n / 3) * 4 

因此,对于16kBarrays,base-64表示将是ceil(16 * 1024/3)* 4 = 21848字节长度= 21.8kB。

一个粗略的近似值是数据的大小增加到原来的4/3。

从维基百科

请注意,如果inputn个字节,则输出将是(n + 2 – ((n + 2)%3))/ 3 * 4个字节长,以便每个input字节的输出字节数收敛到4/3或1.33333为大n。

因此,16kb * 4/3只有21.3'kb或21848个字节才能得到确切的结果。

希望这可以帮助

16kb是131,072位。 Base64将24位缓冲区打包成四个6位字符,因此您将拥有5,462 * 4 = 21,848个字节。

由于问题是关于可能的最大增长,我必须补充说,通常每80个字符左右都有换行符。 这意味着如果你要将base64编码的数据保存到Windows上的文本文件中,它将在Linux上为每行添加2个字节。

上面已经描述了实际编码的增加。