zoukankan      html  css  js  c++  java
  • 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:

    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~

     

    每天都要遇到更好的自己.
  • 相关阅读:
    Freemaker Replace函数的正则表达式运用
    [Android]使用Spring for Android改善数据交互流程
    [Freemarker]自定义时间戳函数
    [jquery.validate]自定义方法实现"手机号码或者固定电话"的逻辑验证
    [Javascript]网页链接加上时间戳防止串用户
    支付系统设计
    java设计模式-抽象工厂模式
    IDEA解决maven多module出现多root的问题
    java设计模式-工厂方法模式
    java设计模式-单例模式
  • 原文地址:https://www.cnblogs.com/kaichenkai/p/10948379.html
Copyright © 2011-2022 走看看