目錄
1、base64是什么
2、base64有什么用
3、base64如何用
4、理解base64
5、擴(kuò)展
1、base64是什么
- base64 就是包括字母a-z,A-Z,數(shù)字0-9,符號“+”,“/”一共64個字符的字符集;
- 還有一個‘=’ 字符,占位補(bǔ)充;? ? ? ? ?--?這樣看實際是65個字符了,‘=’只是占位
- ?任何數(shù)據(jù)都可以轉(zhuǎn)為字符集的字符,這個轉(zhuǎn)換過程就是base64編碼;
- base64不能算是一種加密,只能說是編碼轉(zhuǎn)換!
擴(kuò)展點: 編碼給計算機(jī)看,解碼給人看。
簡單記:
base64編碼操作字節(jié),核心是3轉(zhuǎn)4字節(jié); ---base64是二次編碼的操作!
2、base64有什么用
- base64沒有特殊字符,可以防止傳輸中因為協(xié)議的識別導(dǎo)致理解為控制字符而出錯;
- 確保編碼的結(jié)果可打印且無歧義,不收到特殊字符的影響,例如‘\n’... ;
3、base64如何用
導(dǎo)入模塊:
?import base64?
方法 | 作用 |
---|---|
base64.b64encode( 字節(jié)串 ) | 編碼; 返回 :?byte類型的字節(jié)串 |
base64.b64decode(字節(jié)串 / 字符串) | 解碼; 返回 :?byte類型的字節(jié)串 |
示例:編碼和解碼
import base64
# 編碼過程 兩次:base64編碼 --->字節(jié)串 ----> utf-8解碼顯示為字符串
s = "我是一個字符串"
encoder = base64.b64encode(s.encode("utf-8"))
print(type(encoder)) # <class 'bytes'>
# 編碼后轉(zhuǎn)為字符串顯示
print( encoder.decode('utf-8')) # str類型 5oiR5piv5LiA5Liq5a2X56ym5Liy
# 解碼過程 兩次:base64解碼 --->字節(jié)串 --->utf-8解碼顯示為字符串
decoder = base64.b64decode(encoder)
print(type(decoder)) # <class 'bytes'>
#解碼后轉(zhuǎn)為字符串顯示
print('解碼后:',decoder.decode()) # 我是一個字符串
????????示例二:簡化書寫:
import base64
# 默認(rèn)編碼utf-8
s = '山高路遠(yuǎn),道阻且長。心向往之,行必能至。'
sEncode = base64.b64encode(s.encode()).decode()
print('編碼后的字符串:',sEncode)
# 5bGx6auY6Lev6L+c77yM6YGT6Zi75LiU6ZW/44CC5b+D5ZCR5b6A5LmL77yM6KGM5b+F6IO96Iez44CC
# 解碼:
sDecode = base64.b64decode(sEncode).decode()
print('解碼后的字符串',sDecode)
# 山高路遠(yuǎn),道阻且長。心向往之,行必能至。
4、理解base64
核心點 :3個字節(jié)轉(zhuǎn)為4個字節(jié);? ? ? ?2的6次方 = 64
- 計算機(jī)默認(rèn)一個字節(jié)是8位,base64編碼是6位編碼,這樣最小公倍數(shù)是24;
- 編碼過程是:取三個字節(jié)分為四組,每組前面補(bǔ)0,湊夠8位;? ---所以串長度增加1/3;
- 高位統(tǒng)一補(bǔ)00,低位不足6位,后面低位也補(bǔ)0;
注意點:
????????Base64是把3個字節(jié)變?yōu)?個字節(jié),所以,Base64編碼的長度永遠(yuǎn)是4的倍數(shù),因此,需要加上=把Base64字符串的長度變?yōu)?的倍數(shù),就可以正常解碼了。
理解下圖 :? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?文章來源:http://www.zghlxwxcb.cn/news/detail-806632.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-806632.html
5、擴(kuò)展
- base64編碼串一定是4的倍數(shù),如果不足4的倍數(shù),需要添加‘=’補(bǔ)充;
- 補(bǔ)充 = 的一個方式:?
s64 += ("=" * (4 - len(s64) % 4))
s64 = "eW91eQ" #base64的字符串
# ret = base64.b64decode(s64)
# print(ret)
s64 += ("=" * (4 - len(s64) % 4))
print("填充后", s)
ret = base64.b64decode(s64).decode()
print(ret)
到了這里,關(guān)于python基礎(chǔ)-base64編碼理解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!