文件转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格式,往往比原信息格式要更大。
如图: