base64编码原理
base64编码将3个字节的数据(0-255),通过编码表映射到4个字节的(64个可打印字符)数据集合。
编码表
编码后的字符串长度为:向上取整(源字符串长度 / 3.0) * 4
。
长度是3的倍数的编码
三个字节的base64编码
- 3个字节共
3*8 = 24
个bit。
- 将
24bit
划分为4组。
- 每一组都充当索引值。
- 获取编码表对应索引值的编码值。
- 写入编码后的字符串。
存在余数的编码
当源字符串的长度mod 3
后,存在余数[1, 2],此时需要在编码后的字符串中填充(3 - 余数)个数的=
。
例如:
实现代码(C++)
base64解码
知道了编码的原理,我们就能够实现解码了。
- 读入4个编码后的字符,遇到
=
字符结束。
- 用编码后的字符找到对应的索引值。
- 将4个索引值转换为3个解码字符
- 写入解码后的字符串
汇编实现