Python-数据类型:bytes

  • 0 前言
  • 1 bytes类型的特性
  • 1.1 ASCII表
  • 2 bytes类型创建与转化
  • 2.1 bytes类型与数字
  • 2.2 bytes类型与ASCII字符
  • 2.2.1 创建bytes数据
  • 2.2.2 还原bytes数据
  • 2.3 bytes类型与汉字
  • 3 bytes类型切片迭代
  • 0 前言

    >>返回Python系列文章目录<<

    1 bytes类型的特性

    Python 3.x之后,Python自带字符默认使用utf-8格式编码和显示

  • Python默认字符串string数据类型是utf-8显示形式的序列
  • bytes数据类型是utf-8格式的二进制形式的不可变序列
  • bytearray数据类型是utf-8格式的二进制形式的可变序列
  • 1.1 ASCII表

    2 bytes类型创建与转化

    2.1 bytes类型与数字

    数字类型并不是字符串,无法直接生成对应的bytes类
    Python对数字类型定义了特殊意义

    ① 当入参为数字时,表示创建nul(\x00)的向量

    byte_str = bytes(10)
    print(byte_str)
    >>> b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
    

    ② 当入参为数字的序列时,直接转为bytes的序列,且对应值相同,将数字序列直接写入底层应该使用这种方法

    byte_str = bytes([1, 10, 0xF])
    print(byte_str)
    >>> b'\x00\x10\x0f'
    

    ③ 当二进制数据在[33, 126]区间时,属于ASCII表上可显示字符范围,会直接显示对应的字符
    数字直接使用bytes创建

    byte_str = bytes([33, 48, 126])
    print(byte_str)
    >>> b'!0~'
    

    2.2 bytes类型与ASCII字符

    2.2.1 创建bytes数据

    ① 使用b''创建

    byte_str = b'Python'
    print(byte_str)
    >>> b'Python'
    

    ② 使用bytes()创建不可变序列

    byte_str = bytes('Python', encoding='utf-8')
    print(byte_str)
    >>> b'Python'
    

    ③ 使用bytearray()创建可变序列

    byte_str = bytearray('Python', encoding='utf-8')
    print(byte_str)
    >>> bytearray(b'Python')
    

    2.2.2 还原bytes数据

    ① 使用bytes.decode()还原不可变序列

    byte_str = bytes('Python', encoding='utf-8')
    utf_str = bytes.decode(byte_str)
    print(utf_str)
    >>> 'Python'
    

    ② 使用bytearray.decode()还原可变序列

    byte_str = bytearray('Python', encoding='utf-8')
    utf_str = bytearray.decode(byte_str)
    print(utf_str)
    >>> 'Python'
    

    2.3 bytes类型与汉字

    在UTF-8中,每个汉字用3个Byte表示

    byte_str = bytes('我是', encoding='utf-8')
    print(byte_str)
    >>> b'\xe6\x88\x91\xe6\x98\xaf'
    

    还原:

    byte_str = b'\xe6\x88\x91\xe6\x98\xaf'
    utf_str = bytes.decode(byte_str)
    print(utf_str)
    >>> '我是'
    

    3 bytes类型切片迭代

    ① 通过bytes[index]方式返回的是底层int类型

    byte_str = b'a'
    print(type(byte_str[0]))
    print(byte_str[0])
    >>> <class 'int'>
    >>> 97
    
    byte_str = b'abc'
    print(type(byte_str[2]))
    print(byte_str[2])
    >>> <class 'int'>
    >>> 99
    

    ② 通过for ... in bytes方式返回的是底层int类型

    byte_str = b'abc'
    for byte in byte_str:
        print(type(byte))
        print(byte)
        
    >>> <class 'int'>
    >>> 97
    >>> <class 'int'>
    >>> 98
    >>> <class 'int'>
    >>> 99
    

    ③ 通过bytes[start:end]方式返回的是底层bytes类型

    byte_str = b'a'
    print(type(byte_str[:]))
    print(byte_str[:])
    >>> <class 'bytes'>
    >>> b'a'
    

    来源:一ye残雪

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python-数据类型:bytes

    发表评论