資源簡介
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?se64編碼所需緩沖區偏小???
????????????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
- 上一篇:人工智能專家系統C語言版
- 下一篇:C語言實現telnet
評論
共有 條評論