一、Base64由来
ASCII
在上文中我们介绍了ASCII编码。采用的是8bit编码。但是ASCII中一些打印字符、控制字符在一些数据传递协议中是不能被传递的。Base64采用64个打印字符来表示二进制数据。Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,可用于在HTTP环境下传递较长的标识信息,且具有不可读性,避免人眼可见。
二、Base64编码方式
由于Base64只使用64个字符进行编码,所以我们只需要6bit(2^6=64)就足够表示。
三、ASCII转Base64
ASCII采用8bit,Base64采用6bit;8和6的最小公倍数为24,因此3个字符,需要用3个ASCII码表示,用Base64时就需要4个Base64码。因此在用Base64编码时都是三个字符三个字符的转换,当不足时后位补0。同时要注意ASCII使用数字表示字符,而Base64是先用数字表示,在将其转换成对应于Base64的字符。看下图:
上图蓝色区域代表字符转ASCII,后再转成二进制;红色区域代表基于转换的二进制,将其拆分成6bit一组再转换成Base64编码。注意Base64编码使用字符表示的。其中绿色区域是最后字符E用一个Base64字符无法表示,在二进制后补0,用两个Base64字符表示。