base64解码函数

/**cbase64中的解码函数有误,网上找一个

@param base64code 待解码
@param base64length 长度
@return 解码后
@author 张浩

*/

BYTE* Base64Decode(const char* base64code, DWORD base64length)
{
 char buf[4];
 int i, j;
 int k;
 int l = 0;
 BYTE temp1[4], temp2;
 BYTE* Buffer = new BYTE[base64length*3 / 4];
 DWORD base64a = (base64length / 4) - 1;
 DWORD base64b = 0;
 for (; base64b < base64a + 1; base64b++)
 {
  for (i = 0; i < 4; i++)
  {
   buf[i] = *(base64code + (base64b * 4) + i);
   for (j = 0; j < 65; j++)
   {
    if (buf[i] == base64_alphabet[j])
    {
     temp1[i] = j;
     break;
    }
   }
  }
  i--;
  for (k = 1; k < 4; k++)
  {
   if (temp1[i - (k - 1)] == 64)
   {
    /*m_padnum++;*/ continue;
   }
   temp1[i - (k - 1)] = temp1[i - (k - 1)] /
    LMoveBit(2, (k - 1) * 2);
   temp2 = temp1[i - k];
   temp2 = temp2 & (LMoveBit(2, k * 2) - 1);
   temp2 *= LMoveBit(2, 8 - (2 * k));//move 4
   temp1[i - (k - 1)] = temp1[i - (k - 1)] + temp2;
   Buffer[base64b * 3 + (3 - k)] = temp1[i - (k - 1)];
  }
 }
 return Buffer;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值