Base64编码,是网络传输过程中常用的一种编码,使用预先定义好的64个字符,来编码二进制或文本数据。
编码原理为:
将待编码数据依次取出3个字节的数据(共24位),每6位为一个编码单元,编码为4个Base64字符
例如:
设编码表(BaseTable)为ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
那么对字符串abc的编码过程如下:
1。abc的二进制表示为:
01100001 01100010 01100011
2。将其按六位为一个单元拆分为
011000 010110 001001 100011
这样得到4个2进制数值
分别为十进制的24,22,9,35
3。从编码表中取出分别第25,23,10,36个字符(所有+1,因为下标从0开始)
组成Base64字串,即YWJj
每次3个字节循环取出所有数据,分别编码并将结果字串连接
例如:
待编码字串为abcqwe
BaseTable同上
1。每次取三个字节数据,分别为abc和qwe
2。将abc编码得到YWJj
3。将qwe编码得到cXdl
4。连接编码结果,得到整个字串编码结果YWJjcXdl
如果最后待编码字串不足3位,以0代替补足三位进行编码,并以=补足编码结果
例如:
待编码字串为qweab
BaseTable同上
1。每次取三个字节数据,分别为qwe和ab,其中ab不足三位
3。将qwe编码得到cXdl
3。将ab编码:
1。abc的二进制表示为:
01100001 01100010
用0补足后得到:
01100001 01100010 00000000
2。按没6bit为一单元进行编码
011000 010110 001000 000000
3。前三单元对应编码表YWI,最后一位,用=来代替
4。编码为YWI=
4。整体编码为cXdlYWI=