base64編碼要求把3個8位位元組(3*8=24) 轉化為4個6位的位元組(4*6=24) ,之後在6位的前面補兩個0 ,形成8位乙個位元組的形式。
例如字串「張3」 :
11010101 11000101 00110011
轉換後:
00110101 00011100 00010100 00110011
用十進位制表示即為:53 34 20 51
這個並不是最終的結果,還需要根據base64的編碼表查詢出轉換後 的值。
下面就是base64編碼表:
table 1: the base64 alphabet
value encoding value encoding value encoding value encoding
0 a 17 r 34 i 51 z
1 b 18 s 35 j 52 0
2 c 19 t 36 k 53 1
3 d 20 u 37 l 54 2
4 e 21 v 38 m 55 3
5 f 22 w 39 n 56 4
6 g 23 x 40 o 57 5
7 h 24 y 41 p 58 6
8 i 25 z 42 q 59 7
9 j 26 a 43 r 60 8
10 k 27 b 44 s 61 9
11 l 28 c 45 t 62 +
12 m 29 d 46 u 63 /
13 n 30 e 47 v (pad) =
14 o 31 f 48 w
15 p 32 g 49 x
16 q 33 h 50 y
以上一共是64個編碼,這也是base64名稱的由來,編碼的編號對應的是得出的新位元組的十進位制值 。
因此,上例中字串「張3」經過編碼後就成了字串「1iuz」了。
當**量不是3的整數倍時 ,**量/3的餘數自然就是2或者1。
轉換的時候,結果不夠6位的用0來補上相應的位置,之後再在6位的前面補兩個0。轉換完空出的結果就用就用「=」來補位。譬如結果若最後餘下的為2個位元組的「張」:
字串「張」
11010101 hex:d5 11000101 hex:c5
00110101 00011100 00010100
十進位制53 十進位制34 十進位制20 pad
字元』1』 字元』i』 字元』u』 字元』=』
這樣,最後的2個位元組被整理成了「1iu=」。
同理,若原**只剩下乙個位元組,那麼將會新增兩個「=」 。
只有這兩種情況,所以,base64的編碼最多會在編碼結尾有兩個「=」
完~原文:
base64編碼 動畫演示 Base 64 編碼
base64 是一種十分流行的編碼方式,僅僅使用 64 個字元加等號 就可以以文字的形式表示所有的二進位制資料了,因為它能夠把二進位制格式通過編碼轉換成可見字元,所有我們就可以通過的把二進位制格式比如,檔案等通過 base64 編碼然後通過文字的形式共享出去,是不是很神奇呀。把輸入的資料轉換成 二進...
Base64編碼演算法
base64要求把每三個8bit的位元組轉換為四個6bit的位元組 3 8 4 6 24 然 後把6bit再添兩位高位0,組成四個8bit的位元組,也就是說,轉換後的字串理 論上將要比原來的長1 3。轉換後,我們用乙個碼表來得到我們想要的字串 也就是最終的base64編碼 這個表是這樣的 0 a 1...
Base64編碼演算法
base64 construe aaaaaaaa bbbbbbbb cccccccc dddddddd ffffffff 3byte to 4byte is encode 00aaaaaa 00aabbbb 00bbbbcc 00cccccc 3byte newlen 4 00aaaaaa 00aa...