• 关于字符,字节与base64编码的理解


    字符是用来显示的,如中文字符,英文字符,其类型我字符(串)类型;

    字节是用来存储的,一个字节为8bit。由于字节是8位,无法对中文编码,因此诸如a=b'中文'的写法是错误的。但英文标点数字是可以的,如a=b'abc';

    字符要存储在计算机中或进行传输,就要转化成字节,就涉及的编码方式。为了兼顾统一和内存节省的原则,编码方式有很多。

    对字符编码采用encode(encoding,optional)方法,参数1为编码方式,如utf-8,base64,参数2为可选参数。

    对字节解码用decode(encoding),参数表示解码方式。

    记住:带b的类型为字节(bytes)型,不带b的,为字符类型。二者是不同的数据结构。

    base64模块:

    产生原因:base64模块将一串字节码(二进制流)以6个bit为一组进行编码,(因为6个比特表示的字符在ascii码中是可见字符),所以base64的存在是将所有的字符(可见不可见)转化成可见字符。这样做的原因是避免传输过程中因为不可见字符的存在而容易出错。

    编码方式:由于是6个bit为一组,而正常编码是8bit为一组,因此3个字节的字符可以编码出4个字符,这4个字符都可见。

    因为是将字节码编码,所以base64.b64encode()只能处理字节流。

    base64编码可以将二进制文件(如图片,音频等)编码成文本文件进行传输,到目的地后,再解码成二进制文件,这样有助于加快传输(因为不同类型的数据再网络上以不同的方式传送,耗时)。

    例如图片:

    import b64base
    with open('cat.jpg','rb') as fp:
        bPic=fp.read()#将图片转化成二进制数据
    b64Pic=base64.b64encode(bPic)#将图标编码成b64格式(仍然是二进制)
    b64strPic=b64Pic.decode()#将二进制转成字符串
     
    with open('cat.jpg','wb') as fp:
        bPic=base64.b64decode(b64strPic)#将b64转化成二进制(这里使用b64Pic也可以,b64解码既可以是字符串也可以是对应字符串二进制,结果都一样)
        fp.write(bPic)#转化成图片

  • 相关阅读:
    大数据集群环境ssh免密码登录设置
    FreeRTOS任务创建删除
    BLE外设设计
    BLE控制器之链路层
    BLE控制器之链路层二
    BLE控制器之物理层特性
    BLE基本理论和概念
    BLE主机之ATT和GATT
    BLE主机之SM层
    BLE主机之L2CAP层
  • 原文地址:https://www.cnblogs.com/zhuluqing/p/8830456.html
Copyright © 2020-2023  润新知