BASE64編碼(網路機械人JAVA程式設計指南學習)

2021-07-01 20:45:27 字數 1576 閱讀 1285

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...