为什么Base64转码后,会比原文件大?

rt:众所周知图片base64存储文件大小会比原文件大 为什么会这样呢?

阅读 7.4k
2 个回答

因为二进制补零了,6位变8位,总字节长度当然就膨胀了。

image.png

我查了一些base64的算法,有了一些想法补充在问题下面,希望对查到这个问题的诸君有所帮助:

文件转base64的过程其实是二进制转成文本的过程。

二进制转成文本,流程就是将二进制按照八位一个字节转换成ascll码值就完成了转换。
我们将数据每取八位,然后映射到ascll码表上的0~255即可。
但是此时遇到了一个问题,128--255的这一段的标识并不是统一的。比如,130在法语编码中代表了é,在希伯来语编码中却代表了字母Gimel (ג),在俄语编码中又会代表另一个符号。所以此时ascll码只有128位可用,也就是8位一组的传递不行了,那就七位一组进行传递,在最前面补0,就可以用有限的ascll码值传递二进制了。
此时,又遇到了新的问题,除了不稳定的那128--255的ascll,前128位有许多不可见字符,在传输过程中不一定能稳定传递,因此可被用来转换的ascll码数位就不到7位,因此数据被拆为6位一组进行转换传递,在前面补两个0。

  • 这样一来每一个字节,就只能传递最多为64的信息了,这也就是base64。
  • 又因为前面被补充了两个无效占位0,不能全部用来有效载荷数据,因此base64格式,往往比原信息格式要更大。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏