l
BASE64
编码规则将一组连续的字节数据按
6
个
bit
位进行分组,然后对每组数据用一个
ASCII
字符来表示。
6
个
bit
位最多能表示
2
6
=
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"
l
BASE64
编码要求把
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
。