目的:将任意二进制数据转换为ASCII字符串形式,以便在仅支持文本的环境中传输二进制数据。
过程:
把二进制数据转为字符。
每3个字节的二进制数据(共24位)被分为4组,每组6位(因为2^6 = 64,对应于64个字符)。
在每组前面补2个0,形成8位,然后转换为对应的ASCII字符。
如果二进制数据不是3的倍数,则用\x00字节在末尾补足,并在编码的末尾加上1个或2个=号,表示补了多少字节。
结果:编码后的数据是ASCII字符串,长度约为原始二进制数据的4/3(即长度增加约33%)。
应用场景:常用于电子邮件、短信、URL等的编码和传输。
Base64解码:
目的:将Base64编码的ASCII字符串转换回原始的二进制数据。
过程:
去掉末尾的=号。
根据Base64编码表,查找每个ASCII字符对应的6位二进制值。
将每4个ASCII字符对应的24位二进制值组合成3个字节。
忽略由于\x00字节补足而引入的多余字节。
结果:解码后得到的是原始的二进制数据。