pickle 和 base64 模塊的使用

pickle

  • pickle模塊是python的標準模塊,提供了對於python數據的序列化操做,能夠將數據轉換爲bytes類型,其序列化速度比json模塊要高。
  • pickle.dumps() 將python數據序列化爲bytes類型
  • pickle.loads() 將bytes類型數據反序列化爲python的數據類型

 

base64

  • Base64是一種基於64個可打印字符來表示二進制數據的表示方法。因爲2^6=64,因此每6個比特爲一個單元,對應某個可打印字符。3個字節有24個比特,對應於4個Base64單元,即3個字節可由4個可打印字符來表示。在Base64中的可打印字符包括字母A-Z、a-z、數字0-9,這樣共有62個字符,此外兩個可打印符號在不一樣的系統中而不一樣。
  • Base64經常使用於在一般處理文本數據的場合,表示、傳輸、存儲一些二進制數據,包括MIME的電子郵件及XML的一些複雜數據。
  • python標準庫中提供了base64模塊,用來進行轉換
  • base64.b64encode() 將bytes類型數據進行base64編碼,返回編碼後的bytes類型
  • base64.b64deocde() 將base64編碼的bytes類型或者str類型進行解碼,返回解碼後的bytes類型

 

Demo:python

import base64
import pickle
cart_dict = {1: [2, True], 2: [1, True]}

# dict -> bytes -> str
cart_bytes = pickle.dumps(cart_dict)        # 將python字典轉換爲16進制bytes類型
print(type(cart_bytes), "|", cart_bytes)    # <class 'bytes'>

cart_b64_bytes = base64.b64encode(cart_bytes)       # 轉換爲base64_bytes
print(type(cart_b64_bytes), "|", cart_b64_bytes)    # <class 'bytes'>

cart_b64_str = cart_b64_bytes.decode()          # 解碼成base64_str
print(type(cart_b64_str), "|", cart_b64_str)    # <class 'str'>

print("=" * 100)

cart_b64_str = "gAN9cQAoSwFdcQEoSwKIZUsCXXECKEsBiGV1Lg=="
# str -> bytes -> dict
cart_bytes = base64.b64decode(cart_b64_str)     # 將字符串直接將base64_str轉換爲16進制的bytes
print(type(cart_bytes), "|", cart_bytes)        # <class 'bytes'>

cart_dict = pickle.loads(cart_bytes)        # 將16進制的bytes轉換爲python字典
print(type(cart_dict), "|", cart_dict)      # <class 'dict'>

# 值得注意的是:在獲得python字典的過程當中,base64.decode()能夠解碼 base64_bytes,也能夠直接解碼 base64_str

  

end~json

相關文章
相關標籤/搜索