C++ 实现Base64转码string和unsigned char *

首先需要说明的是,和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
比较通俗易懂。
解码暂时不需要,但是原理上差不多。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值