VC中BASE64编码和解码使用详解

2020-01-06 13:59:03丽君
  • int CSeeBase64Dlg::DecodeBase64(char * pInput, char * pOutput)  { 
  • int i = 0;  int iCnt = 0; 
  • int iSrcLen = (int)strlen(pInput);   
  • char * p = pOutput;   
  • for (i=0; i < iSrcLen; i++)  { 
  • if (pInput[i] > 127) continue;  if (pInput[i] == '=') return p-pOutput+1; 
  •   BYTE a = BVal(pInput[i]); 
  • if (a == 255) continue;   
  • switch (iCnt)  { 
  • case 0:  { 
  • *p = a << 2;  iCnt++; 
  • }  break; 
  •   case 1: 
  • {  *p++ |= a >> 4; 
  • *p = a << 4;  iCnt++; 
  • }  break; 
  •   case 2: 
  • {  *p++ |= a >> 2; 
  • *p = a << 6;  iCnt++; 
  • }  break; 
  • case 3:  { 
  • *p++ |= a;  iCnt = 0; 
  • }  break; 
  • }   } 
  •   *p = 0x00; 
  • return p-pOutput;  } 


    注:相关教程知识阅读请移步到C++教程频道。