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

2020-01-06 13:59:03丽君
  • {  for( i = 0; i < inputCount; i += 4 ) 
  • {  for( j = 0; j < 4; j++ ) 
  • {  ch = *inputBuffer++; 
  • if( (ch < 0) || (ch >= 0x80) )  { 
  • return -2; // 数据错误,不在ASCII字符编码范围内  } 
  • else  { 
  • if( ch == '=' ) // 发现BASE64编码中的填充字符  { 
  • break;  } 
  • else  { 
  • b[j] = DATA_ASCII2BIN[ch];  if( b[j] & 0x80 ) 
  • {  return -2; // 数据错误,无效的Base64编码字符 
  • }  }  
  • }  } // End for j 
  •   if( j == 4 ) 
  • {  *outputBuffer++ = (b[0] << 2) | (b[1] >> 4); 
  • *outputBuffer++ = (b[1] << 4) | (b[2] >> 2 );  *outputBuffer++ = (b[2] << 6) | b[3]; 
  • }  else if( j == 3 ) 
  • { // 有1个填充字节  *outputBuffer++ = (b[0] << 2) | (b[1] >> 4); 
  • *outputBuffer++ = (b[1] << 4) | (b[2] >> 2 );   
  • return (i >> 2) * 3 + 2;  } 
  • else if( j == 2 )  { // 有2个填充字节 
  • *outputBuffer++ = (b[0] << 2) | (b[1] >> 4);   
  • return (i >> 2) * 3 + 1;  } 
  • else  { 
  • return -2; // 数据错误,无效的Base64编码字符  }  
  • } // End for i  } 
  •   return (inputCount >> 2) * 3;