base64解码函数

来源:互联网 发布:笔记本mac地址修改器 编辑:程序博客网 时间:2024/04/30 13:13

/**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;
}

原创粉丝点击