为啥会出现Base64字符编码?
我们知道处理一串二进制码,操作系统要想知道这串二进制码代表的是哪一个字符,就必须有字符集的帮助,就比如GBK,Unicode,ASCII等等,只要有了这些字符集,二进制码串才会被系统识别并操作(比如说打印出来)。但是有些系统仅提供ASCII字符集,对于其他字符集编码的二进制码串,操作系统不认识(打印出来就是乱码了)。Base64就是用来将非ASCII字符的数据转换成ASCII字符的一种方法。
但是ASCII的字符中有些是不可见的,有些是控制字符,比如 NUL(空字符) BS(退格) LF(换行符),这些字符是不可见的,而且有可能被当成控制字符处理,比如一个纯文本协议,二进制中可能会出现被当做控制字符处理的部分。这样引起传输失败。
Base64 最早就是用来邮件传输协议中的,原因是邮件传输协议只支持 ascii 字符传递,因此如果要传输二进制文件,如:图片、视频是无法实现的。因此 base64 就可以用来将二进制文件内容编码为只包含 ascii 字符的内容,这样就可以传输了。
如何编码?
Base64将二进制码串转化为64(刚好是2^6)个可见字符来表示。所以3 * 8位能表示3个字节,64个可见字符只需要6位就能编码,所以这3个字节扩充为4 * 6 位,每个6位再查找索引表找到对应字符,在转成ASCII码,就变成了4个字节。
可见字符编码 Basse64编码过程
网友评论