【python】字節轉換 base64 encode decode pickle


pickle模塊的使用

pickle模塊是python的標准模塊,提供了對於python數據的序列化操作,可以將數據轉換為bytes類型,其序列化速度比json模塊要高。

  • pickle.dumps() 將python數據序列化為bytes類型
  • pickle.loads() 將bytes類型數據反序列化為python的數據類型
>>> import pickle

>>> d = {'1': {'count': 10, 'selected': True}, '2': {'count': 20, 'selected': False}}
>>> s = pickle.dumps(d)
>>> s
b'\x80\x03}q\x00(X\x01\x00\x00\x001q\x01}q\x02(X\x05\x00\x00\x00countq\x03K\nX\x08\x00\x00\x00selectedq\x04\x88uX\x01\x00\x00\x002q\x05}q\x06(h\x03K\x14h\x04\x89uu.'
>>> pickle.loads(s)
{'1': {'count': 10, 'selected': True}, '2': {'count': 20, 'selected': False}}
 

base64模塊的使用

Base64是一種基於64個可打印字符來表示二進制數據的表示方法。由於2^6=64,所以每6個比特為一個單元,對應某個可打印字符。3個字節有24個比特,對應於4個Base64單元,即3個字節可由4個可打印字符來表示。在Base64中的可打印字符包括字母A-Za-z、數字0-9,這樣共有62個字符,此外兩個可打印符號在不同的系統中而不同。

Base64常用於在通常處理文本數據的場合,表示、傳輸、存儲一些二進制數據,包括MIME的電子郵件及XML的一些復雜數據。

python標准庫中提供了base64模塊,用來進行轉換

  • base64.b64encode() 將bytes類型數據進行base64編碼,返回編碼后的bytes類型
  • base64.b64deocde() 將base64編碼的bytes類型進行解碼,返回解碼后的bytes類型
>>> import base64
>>> s
b'\x80\x03}q\x00(X\x01\x00\x00\x001q\x01}q\x02(X\x05\x00\x00\x00countq\x03K\nX\x08\x00\x00\x00selectedq\x04\x88uX\x01\x00\x00\x002q\x05}q\x06(h\x03K\x14h\x04\x89uu.'
>>> b = base64.b64encode(s)
>>> b
b'gAN9cQAoWAEAAAAxcQF9cQIoWAUAAABjb3VudHEDSwpYCAAAAHNlbGVjdGVkcQSIdVgBAAAAMnEFfXEGKGgDSxRoBIl1dS4='
>>> base64.b64decode(b)
b'\x80\x03}q\x00(X\x01\x00\x00\x001q\x01}q\x02(X\x05\x00\x00\x00countq\x03K\nX\x08\x00\x00\x00selectedq\x04\x88uX\x01\x00\x00\x002q\x05}q\x06(h\x03K\x14h\x04\x89uu.'

 

# cart_str ---> 本地cookie獲取的值
cart_str = request.COOKIES.get("cart")
print("0")
print(cart_str)
print("1")
print(cart_str.encode())
print("2")
print(base64.b64decode(cart_str.encode()))
cart_dict = pickle.loads(base64.b64decode(cart_str.encode()))
print("3")
print(cart_dict)
 
 
輸出:
0
gAN9cQBLCH1xAShYBQAAAGNvdW50cQJLAlgIAAAAc2VsZWN0ZWRxA4h1cy4=
1
b'gAN9cQBLCH1xAShYBQAAAGNvdW50cQJLAlgIAAAAc2VsZWN0ZWRxA4h1cy4='
2
b'\x80\x03}q\x00K\x08}q\x01(X\x05\x00\x00\x00countq\x02K\x02X\x08\x00\x00\x00selectedq\x03\x88us.'
3
{8: {'count': 2, 'selected': True}}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM