在一些业务场景下,我们会将文件或图片转化为Base64编码进制传输,而业务中有需要对文件的大小进行限制,如何在不进行解码的情况下判断出文件的大小呢。
Base64编码要求把3个8位字节(38=24)转化为4个6位的字节(46=24),之后在6位的前面补两个0,形成8位一个字节的形式。
如果剩下的字符不足3个字节,则用0填充,输出字符使用‘=‘,因此编码后输出的文本末尾可能会出现1或2个‘=‘。
为了保证所输出的编码位可读字符,Base64制定了一个编码表,以便进行统一转换。编码表的大小为2^6=64,这也是Base64名称的由来。
由Base64编码的性质可知,原文件在经由Base64编码后,体积会增长1/3。 1 → 4/3
反之,Base64字符串中的4个字符即对应原文件的3字节。
那么计算原文件的大小只需要得出Base64字符串的长度,再乘以0.75即可。该方法可能存在1Byte的大小误差,计算出的大小可能比真实大小多1Byte,也可能与真实文件大小正好相等。
参考:
https://www.cnblogs.com/bigorang/p/10702944.html
http://cn.voidcc.com/question/p-oameqciv-xg.html
原文:https://www.cnblogs.com/mirage0/p/14419549.html