Base64的原理及實現

2021-06-23 02:27:44 字數 1053 閱讀 4674

base64編碼原理:

第一步,每三個位元組作為一組,一共是24位二進位制數。

第二步,將24位二進位制數分為四組,每組有6位二進位制。

第三步,在每組前面加兩個0(即00),擴充套件成32個二進位制位,即四個位元組。

以上三步將3個位元組擴充套件成4個位元組。

第四步,根據base64的編碼表將其編碼,編碼表連線

若遇到字串不是3的整數倍時,可分以下兩種情況:

1、整除多餘兩個位元組的情況:將這二個位元組的一共16個二進位制位,按照上面的規則,轉成三組,最後一組除了前面加兩個0以外,後面也要加兩個0。這樣得到乙個三位的 base64編碼,再在末尾補上乙個"="號。

2、整除多餘兩個位元組的情況:將這乙個位元組的8個二進位制位,按照上面的規則轉成二組,最後一組除了前面加二個0以外,後面再加4個0。這樣得到乙個二位的base64編碼,再在末尾補上兩個"="號。

原理介紹完了,下面以c++來進行實現,具體**如下:

#include #include using namespace std;

const char base64encodechars=;

void base64encode(string &src,string &res)

c2=src[i++];

if (i==len)

c3=src[i++];

res.push_back(base64encodechars[c1>>2]);

res.push_back(base64encodechars[((c1&0x03)<<4)|(c2>>4)]);

res.push_back(base64encodechars[((c2&0x0f)<<2)|(c3>>6)]);

res.push_back(base64encodechars[c3&0x3f]); }}

void base64decode(string &src,string &res)

if (c4!='=')

}}int _tmain(int argc, _tchar* argv)

若有問題,敬請斧正!!

base64編碼的原理及實現

但是處於好奇心,還是驅使我去了解下base64編碼的原理。以便也在不支援原生base64編碼的ie下可以得以實現。base64 base64的編碼都是按字串長度,以每3個8bit的字元為一組,然後針對每組,首先獲取每個字元的ascii編碼,然後將ascii編碼轉換成8bit的二進位制,得到一組3 8...

base64編碼的原理及實現

base64的編碼都是按字串長度,以每3個8bit的字元為一組,然後針對每組,首先獲取每個字元的ascii編碼,然後將ascii編碼轉換成8bit的二進位制,得到一組3 8 24bit的位元組 然後再將這24bit劃分為4個6bit的位元組,並在每個6bit的位元組前面都填兩個高位0,得到4個8bi...

關於base64編碼的原理及實現

但是處於好奇心,還是驅使我去了解下base64編碼的原理。以便也在不支援原生base64編碼的ie下可以得以實現。base64 base64的編碼都是按字串長度,以每3個8bit的字元為一組,然後針對每組,首先獲取每個字元的ascii編碼,然後將ascii編碼轉換成8bit的二進位制,得到一組3 8...