base64編對應表(十進位制)
以字串spider為例
public class test1 ;
public static void main(string args)
} }}}
byte sb=s.getbytes();得到字串spider的位元組陣列的十進位制ascii碼值
s = 83
p = 112
i = 105
d = 100
e = 101
r = 114
因此,字串spider的十進位制形式為 83 112 105 100 101 114,我們需要將其轉換成二進位制形式:
83 = 01010011
112 = 01110000
105 = 01101001
100 = 01100100
101 = 01100101
114 = 01110010
十進位制轉換成2進製的方法:
int buffer = new int[3];建立中間陣列,長度為3的原因:
字串spider的二進位制形式(即以上十進位制數83 112 105 100 101 114的二進位制順次連線)為010100110111000001101001011001000110010101110010
而base64的編碼規定為6位一組,以上分隔為:010100 110111 000001 101001 011001 000110 010101110010
可以發現3個十進位制數的二進位制形式正好分為4組。(3*8/6=4)
**中得四行輸出即為4組:
1)第一行輸出:tobase64[(buffer[0]&0xfc)>>2]
分析:16進製制fc的十進位制為0xfc=f*16^1 +c*16^0
= 15*16^1 +12*16^0
= 252
252的二進位制為:11111100
其中buffer[0]為s=83 = 01010011
buffer[0]&0xfc
= s & 0xfc
= 83 & 252
= 01010011 & 11111100
0 1 0 1 0 0 1 1
& 1 1 1 1 1 1 0 0
結果 0 1 0 1 0 0 0 0 (按位與:兩者都為1結果才為1)
0 1 0 1 0 0 0 0 左移2位(即》2)最後兩位 0 0捨去得0 1 0 1 0 0,所得結果正為分組中的第一組
0 1 0 1 0 0的十進位制為2*2^4+2*2^2=20(對應base編碼表的字元u即tobase64[20])
2)tobase64[((buffer[0] &0x03)<<4) | ((buffer[1]&0xf0)>>4)] 類似第一步分析,需注意的是按位或(|)兩者有乙個為1即為1
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...