• 大小: 4KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-06-04
  • 语言: C/C++
  • 标签: base64  编码解码  

资源简介

base64编码与解码源程序 C语言实现

资源截图

代码片段和文件信息

#include    
#include    
  
typedef unsigned char BYTE;   
  
/*====================================================================  
 base64编码函数  
 btSrc指向被编码的数据缓冲区  
 iSrcLen被编码的数据的大小(字节)  
 btRet指向存放base64编码的数据缓冲区  
 piRetLen指向存放base64编码的数据缓冲区的长度  
 若btRet为NULL函数返回0,piRetLen传回btSrc的base64编码所需缓冲区的大小  
 若btRet指向的缓冲区太小,函数返回-1  
 否则函数返回实际btSrc的base64编码所需缓冲区的大小  
=====================================================================*/  
int Encodebase64(BYTE *btSrc int iSrcLen BYTE *btRet int *piRetLen) //base64编码   
{   
    int i = 0 j = 0 k = 0 ;   
    BYTE Encodebase64Map[] = “ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/“;   
       
    i = (iSrcLen+2) / 3 * 4 ; //获取btSrc的base64编码所需缓冲区的大小   
    if(btRet != NULL)   
    {   
        if(*piRetLen < i) //base64编码所需缓冲区偏小   
            return -1 ;   
        *piRetLen = i ; //*piRetLen返回btSrc的base64编码的缓冲区大小   
    }   
    else  
    {   
        *piRetLen = i ;   
        return 0 ;   
    }   
  
    k = iSrcLen - iSrcLen % 3 ;   
    for(i=j=0; i    {   
        btRet[j++] = Encodebase64Map[(btSrc[i]>>2)&0x3F] ;   
        btRet[j++] = Encodebase64Map[((btSrc[i]<<4) + (btSrc[i+1]>>4))&0x3F] ;   
        btRet[j++] = Encodebase64Map[((btSrc[i+1]<<2) + (btSrc[i+2]>>6))&0x3F] ;   
        btRet[j++] = Encodebase64Map[btSrc[i+2]&0x3F] ;   
    }   
    k = iSrcLen - k ;   
    if(1 == k)   
    {   
        btRet[j++] = Encodebase64Map[(btSrc[i]>>2)&0x3F] ;   
        btRet[j++] = Encodebase64Map[(btSrc[i]<<4)&0x3F] ;   
        btRet[j++] = btRet[j] = ‘=‘ ;   
    }   
    else if(2 == k)   
    {   
        btRet[j++] = Encodebase64Map[(btSrc[i]>>2)&0x3F] ;   
        btRet[j++] = Encodebase64Map[((btSrc[i]<<4) + (btSrc[i+1]>>4))&0x3F] ;   
        btRet[j++] = Encodebase64Map[(btSrc[i+1]<<2)&0x3F] ;   
        btRet[j] = ‘=‘ ;   
    }   
  
    return ++j ;   
}   
  
/*====================================================================   
 base64解码函数   
 btSrc指向被解码的数据缓冲区   
 iSrc

评论

共有 条评论