0
点赞
收藏
分享

微信扫一扫

Python 序列 - bytes 和 bytearray

Sky飞羽 2021-09-29 阅读 84

一. 字节串 bytes

字节串 bytes 也叫字节序列,存储以字节为单位的数据,bytes 具有以下特点:

  • 字节串是不可变的字节序列;
  • 字节是 0~255 的整数;
  • 数据传输和存储都是以字节为单位存储的:1byte = 8bit,即 1 个字节等于 8 位;

示例

字符串编码后得到的字节串,均是 0x00~0xFF 之间的整数:

>> '中国'.encode('utf-8')
b'\xe4\xb8\xad\xe5\x9b\xbd'

下面,我们来看 bytes 的基本操作。

创建空字节串字面量

>> b1, b2, b3, b4 = b'', b"", b'''''', b""""""
>> b1, b2, b3, b4
(b'', b'', b'', b'')

创建非空字节串的字面值

>> b1 = b'Python'
>> b1
b'Python'

也可以使用十六进制的形式创建字面值:

>> hex(ord('P')), hex(ord('y'))
('0x50', '0x79')
>> b3 = b'\x50\x79'
>> b3
b'Py'

但不允许直接使用非 ASCII 字符创建:

>> b2 = b'中国'
  File "<ipython-input-4-30ea9a50e9c6>", line 1
    b2 = b'中国'
        ^
SyntaxError: bytes can only contain ASCII literal characters.
>> b2 = b'\xe4\xb8\xad\xe5\x9b\xbd'
>> b2
b'\xe4\xb8\xad\xe5\x9b\xbd'
>> b2.decode('utf-8')
'中国'

字节串的构造函数

函数 说明
bytes() 生成一个空的字节串,等同于 b''
bytes(整型可迭代对象) 用可迭代对象初始化一个字节串
bytes(整数n) 生成 n 个值为 0 的字节串
bytes(字符串,encoding='utf-8') 用字符串的转换编码生成一个字节串

具体用法如下:

>> bytes()
b''
>> bytes(range(97,100))
b'abc'
>> bytes(3)
b'\x00\x00\x00'
>> bytes('中国', encoding='utf-8')
b'\xe4\xb8\xad\xe5\x9b\xbd'

字节串的运算

运算 详情
算数运算 ++=**=
比较运算 <<=>>===!=
成员运算 innot in
序列操作 索引 、切片
函数 len()max()min()sum()any()all()

bytes 和 str 的区别

  • bytes 存储字节(0-255);
  • str 存储 Unicode 字符(0 - 65535或更大);

bytes 与 str转换

             编码(encode)
str ---------------------------------> bytes
b = s.encode(encoding = 'utf-8')

             解码(decode)
bytes ---------------------------------> str
s = b.decode(encoding = 'utf-8')

二. 字节数组 bytearray

字节数组是 可变的字节序列

创建函数 bytearray

函数 说明
bytearray() 生成一个空的字节数组
bytearray(整型可迭代对象) 用可迭代对象生成一个字节数组
bytearray(整数n) 生成包含 n 个值为 0 的字节数组
bytearray(字节串,encoding='utf-8') 用字符串的转换编码生成一个字节数组

具体用法如下:

>> bytearray()
bytearray(b'')
>> ba = bytearray(range(65, 68))
>> ba
bytearray(b'ABC')
>> ba[1] = 98
>> ba
bytearray(b'AbC')
>> bytearray(3)
bytearray(b'\x00\x00\x00')
>> bytearray('中国', encoding='utf-8')
bytearray(b'\xe4\xb8\xad\xe5\x9b\xbd')

值得注意的是字节数组是可变的字节序列,因此,字节数组支持索引和切片赋值。

举报

相关推荐

0 条评论