為什么叫base64
因?yàn)樗腔?4個(gè)字符進(jìn)行的編碼
A-Z -- 0 - 25
a-z -- 26 - 51
0-9 -- 52 - 61
+ -- 62
/ -- 63
26 + 26 + 10 + 1 + 1 = 64
為什么需要base64
簡(jiǎn)單說(shuō)是因?yàn)橐恍┨厥庾址麩o(wú)法傳輸,而通過(guò)base64編碼之后就都是普通字符
如何進(jìn)行base64編碼
首先我們要知道
一個(gè)字節(jié)等于8個(gè)二進(jìn)制位
1Byte = 8bit
base64以3個(gè)字節(jié)也就是24個(gè)二進(jìn)制位為一組,到時(shí)候解析也是以3個(gè)字節(jié)去解析
base64是以6個(gè)二進(jìn)制位為一個(gè)單元進(jìn)行解析,而字符是以8個(gè)二進(jìn)制位為一個(gè)單元
6和8的最小公倍數(shù)是24,所以base64編碼以24個(gè)二進(jìn)制位為一組。這樣,保證每一組base64編碼能對(duì)應(yīng)3個(gè)字節(jié)。
下面來(lái)看如何進(jìn)行編碼 對(duì) abc 進(jìn)行編碼
- abc
- 將
abc轉(zhuǎn)換為ASCII碼 得到
a - 97
b - 98
c - 99 - 將97、98、99轉(zhuǎn)換為8位二進(jìn)制 得到
97 -01100001
98 -01100010
99 -01100011 - 所以這個(gè)abc的二進(jìn)制表示就是
011000010110001001100011 - 然后每6位為一個(gè)單元取
011000
010110
001001
100011 - 轉(zhuǎn)換為10進(jìn)制 得到
24
22
9
35 - 根據(jù)base64的編碼表得到
Y
W
J
j
所以最終abc的base64編碼就是 YWJj
那么對(duì)于不足24個(gè)二進(jìn)制位的如何處理
比如 ab
轉(zhuǎn)換之后得到的二進(jìn)制是 01100001 、 01100010
按base64分組之后是 011000 010110 0010
第三組不足6位,通過(guò)補(bǔ)0 湊齊6位,結(jié)果如下
011000 010110 001000
按base64編碼表得到 YWI
此時(shí)不足一組,通過(guò)=補(bǔ)齊一組
所以最終結(jié)果是 YWI=
中文的base64編碼
中文需要看按哪種編碼來(lái)進(jìn)行轉(zhuǎn)換 然后再進(jìn)行base64編碼