首先需要说明的是,和Java、Android不同,C++的Byte数组是作为unsigned char存在的。同样是一个字节,占8位。
Base64的原理,就是把3个8位的char,通过位运算,变成4个6位的char。再经过高两位,也就是把256个选择变成了64个选择。而64个刚好是ASCII码中可以用来输出的64个字符,大小写英文字母52个+10个数字+两个特殊字符‘+’和‘/’。
具体操作是通过位运算。代码如下
c4[0] = (c3[0] & 0xfc) >> 4;
c4[1] = ((c3[0] & 0x03) << 4) + ((c3[1] & 0xf0) >> 4);//第一个char的后两位加后一个char的高四位
c4[2] = ((c3[1] & 0x0f) << 2) + ((c3[2] & 0xC0) >> 6);//第二个char的后四位+第三个char的高两位
c4[3] = c3[2] & 0x3f;//第三个char的低六位
主要参考https://blog.csdn.net/sjy88813/article/details/6668695
比较通俗易懂。
解码暂时不需要,但是原理上差不多。