簡介
base64模塊是用來作base64編碼解碼,常用於小型數據的傳輸。編碼后的數據是一個字符串,其包括a-z、A-Z、0-9、/、+共64個字符,即可用6個字節表示,寫出數值就是0-63.故三個字節編碼的話就變成了4個字節,如果數據字節數不是3的倍數,就不能精確地划分6位的塊,此時需要在原數據后添加1個或2個零值字節,使其字節數為3的倍數,然后在編碼后的字符串后添加1個或2個‘=’,表示零值字節,故事實上總共由65個字符組成。下面舉幾個小例子。
將3個字節的‘Xue‘進行base64編碼:

將2個字節’Xu‘進行base64編碼:

將1個字節’X'進行base64編碼:

base64模塊真正用的上的方法只有8個,分別是encode, decode, encodestring, decodestring, b64encode,b64decode, urlsafe_b64decode,urlsafe_b64encode。他們8個可以兩兩分為4組,encode,decode一組,專門用來編碼和解碼文件的,也可以StringIO里的數據做編解碼;encodestring,decodestring一組,專門用來編碼和解碼字符串; b64encode和b64decode一組,用來編碼和解碼字符串,並且有一個替換符號字符的功能;urlsafe_b64encode和urlsafe_b64decode一組,這個就是用來專門對url進行base64編解碼的。
代碼實例
- b64encode和b64decode:對字符串操作
import base64
st = 'hello world!'.encode()#默認以utf8編碼
res = base64.b64encode(st)
print(res.decode())#默認以utf8解碼
res = base64.b64decode(res)
print(res.decode())#默認以utf8解碼
aGVsbG8gd29ybGQh
hello world!
編碼與解碼的處理對象是byte,故對原數據要先編碼,使原本的str類型變成byte,解碼后直接輸出來的是byte對象,故要解碼成str對象。
- encode和code:對文件操作,有兩個參數,一個是input,一個是output。
import base64
import io
st = "hello world!"
f = io.StringIO() #創建文件
out1 = io.StringIO()
out2 = io.StringIO()
f.write(st)
f.seek(0)
base64.encode(f,out1)
print(out1.getvalue())
out1.seek(0)
base64.decode(out1,out2)
print(out2.getvalue())
