lBASE64编码规则将一组连续的字节数据按6个bit位进行分组,然后对每组数据用一个ASCII字符来表示。6个bit位最多能表示26=64个数值,因此可以使用64个ASCII字符来对应这64个数值,这64个ASCII字符为:
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
l计算[0110,0001][0110,0010] [0110,0011]的BASE64编码
[0110,0001][0110,0010] [0110,0011]à[0110,00] [01,0110,][0010,01] [10,0011]
[0110,00][01,0110,] [0010,01] [10,0011]à[24]10 [22]10 [9]10 [35]10
[24]10 [22]10 [9]10 [35]10à"YWJj"
lBASE64编码要求把3个8位字节(即24个bit)的数据转化为4个6位字节(也是24个bit)的数据,如果原来的8位字节数据的字节个数不能被3整除,那么如何对余下的1个或2个8位字节数据进行处理呢?
仍然按6个bit位对剩余的字节进行分组,在最后不够6个bit位的内容后面添加几个为0的bit位来凑成6个bit位,例如,[0110,0001]à[0110,00] [01,0000]
l如果编码后的整个结果文本的字符个数不是4的整数倍,那么需要在最后填充“=”字符来凑成4的倍数。
l经过BASE64编码后的结果所占用的字节个数大约是原始内容的4/3倍,计算公式为:编码后的大小=
((原始大小+2)/3)*4。
本文详细介绍了BASE64编码的基本原理及其实现过程,包括如何将连续的字节数据转换为ASCII字符,处理不足3个8位字节的情况以及如何进行填充等。
639

被折叠的 条评论
为什么被折叠?



