Answers:
Base64将每组三个字节编码为四个字节。另外,将输出填充为始终是四的倍数。
这意味着大小为n的字符串的base-64表示形式的大小为:
ceil(n / 3) * 4
因此,对于16kB阵列,base-64表示形式为ceil(16 * 1024/3)* 4 = 21848字节长〜= 21.8kB。
一个粗略的近似值将是该数据的尺寸增大到原来的4/3。
ceil
带float
数字或只是int
数字。(和否ceil
)
这对我自己是将来的参考。由于问题是在最坏的情况下发生的,因此我们应该考虑换行。尽管RFC 1421将最大行长度定义为64个字符,但RFC 2045(MIME)指出,一行中最多只能有76个字符。
后者是C#库已实现的。因此,在换行符为2个字符(\ r \ n)的Windows环境中,我们得到以下信息:Length = Floor(Ceiling(N/3) * 4 * 78 / 76)
注意:设置底线是因为在用C#测试期间,如果最后一行恰好以76个字符结尾,则不会出现换行符。
我可以通过运行以下代码来证明这一点:
byte[] bytes = new byte[16 * 1024];
Console.WriteLine(Convert.ToBase64String(bytes, Base64FormattingOptions.InsertLineBreaks).Length);
使用76个字符的行将16 KB编码为base64的答案:22422个字符
假设在Linux中可以,Length = Floor(Ceiling(N/3) * 4 * 77 / 76)
但是我还没有在.NET内核上进行测试。