1. base64原理
1.1编码
分组
将原本的数据按照3个字符一组进行分组。重新划分
3*8 == 24 == 4*6
将3个字符的划分成4个6比特的,给这4个6比特的补两位0,补够8比特,这样3个字符就成了4个字符。编码
重新划分后的字符的整型值一定在0-63之间,一个字符8位,最高两位全是0,所以最大的就是63.
我们那重新划分后的整型值对照编码表进行编码,如果整型值为0,对应的就是A,以此类推。
特殊情况如下图,对于有位数但不够6位的,我们进行补0操作,对于什么也没有的,我们用等号表示
1.2 解码
上述过程的逆操作。
2.示例代码
见demo.c
3.注意事项
3.1 dst空间大小
若编码前长度n,根据编码规则,编码后的长度m符合这行代码m = (n % 3 == 0) ? (n / 3) * 4 : (n / 3 + 1) * 4;
为了便于打印编码后的数据,强烈建议dst的空间大小应当是m+1;
当src_len = 3 |
3.2 src最大长度
你可以使用下面两个宏来查看最大允许的待编码字符长度
SUHENG_BASE64_ENCODE_SRC_MAX_LENGTH:encode编码时,允许输入的最大长度。 |