Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),
然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串,在理论上将要比原来的长1/3。
编码的规则:
1.把3个字符变成4个字符。
2.每76个字符加一个换行符。
3.最后的结束符也要处理。
如果最后剩下两个输入数据,在编码结果后加1个“=”;
如果最后剩下一个输入数据,编码结果后加2个“=”;
如果没有剩下任何数据,就什么都不要加,这样才可以保证资料还原的正确性。
如何进行base64编码
Base64 使用US-ASCII子集的65个字符, 每个字符用6位表示
对于文本串,编码过程如下。例如"men":
先转成US-ASCII值.
"m"十进制 109
"e"十进制 101
"n"十进制 110
二进制 :
m 01101101
e 01100101
n 01101110
三个8位连起来是24位
011011010110010101101110
然后分成4个6位
011011 010110 010101 101110
现在得到4个值,十进制为
27 22 21 46
对应的 Base64 字符是 : b W V u
编码总是基于3个字符,从而产生4个Base64字符。
如果只是2个字符的数据,使用特殊字符"="补齐Base64的4字。
如,编码"me"
01101101 01100101
0110110101100101
011011 010110 0101
111111 (与,补足6位)
011011 010110 010100
b W U
b W U = ("=" 补足4字符)
于是 "bWU=" 就是"me"的Base64值.
如果只是2个字符的数据,如编码 "m"
01101101
011011 01
111111
011011 010000
b Q = =
于是 "bQ==" 就是"m"的Base64值.
参考链接:http://staratsky.iteye.com/blog/314651
http://zh.wikipedia.org/wiki/Base64