bytearray() <Python 内置函数>

如题所述

第1个回答  2022-06-06

class bytearray([ source [, encoding [, errors ]]])

该内置函数本质上是 bytearray 类的构造函数,用于创建一个 bytearray 实例。bytearray 实例是一个由字节(8-bits 无符号)构成的可变序列,并拥有大多数可变序列的常见方法[详见: Mutable Sequence Types ],并且还包含 bytes 类型中的大多数方法[详见: Bytes and Bytearray Operations ]

在 Python 中,我们可以通过 bytes 字面值来创建 bytes 对象,但并没有用于创建 bytearray 字面值的语法,我们只能通过调用构造函数 bytearray() 来创建 bytearray 对象。

初始化 bytearray 实例的方式如下:

扩展阅读: Binary Sequence Types — bytes, bytearray, memoryview 及 Bytearray Objects .

在 C 语言中创建字节数组的语法如下:

Python 中的 bytearray 对象与 C 语言中的字节数组类似, 每个索引位置都对应一个整数 x (且 0≤x≤255) 。不同之处在于 bytearray 对象会以转义序列或 ASCII 字符显示相应数值(如,将十进制整数 65 显示为字母 A),但是 bytearray 对象的每个索引位置仍然是一个数值,而非一个字符。bytearray 对象是一个实实在在的 字节序列 ,每个索引位置对应一个字节(byte)而不是一个字符(char)。

注意:不能将 bytearray 完全等同于 C 的字符数组,因为 bytearray 远比字符数组强大。

下面创建一个与上面的 C 语言字节数组拥有相同内容的 bytearray 对象:

如果某个索引位置的数值对应 ASCII 编码中的可见字符,那么该索引位便会显示该字符:

如果某个索引位置的数值对应 ASCII 编码中的不可见字符,但该字符拥有"独立转义序列",那么该索引位置会显示该"独立转义序列":

如果某个索引位置的数值对应 ASCII 编码中的不可见字符,并且该字符没有"独立转义序列";或该数值已超出了 ASCII 编码的范围。那么该索引位置会显示十六进制( '\xhh' )转义序列。在 bytearray 对象中,十六进制( '\xhh' )转义序列用于表示具有指定数值的字节。

将 bytearray 对象中各个字节的数值,尽力按照 ASCII 编码显示为相应字符的好处是:如果 bytearray 对象是一个 ASCII 编码的字节序列,那么便可直接读懂其中的内容,无需解码:

再次提醒:bytes 对象是一个实实在在的 字节序列 ,每个索引位置对应一个数值而不是一个字符。在读取 bytes 对象的任意索引位置时,只会得到某个数值,不会得到 ASCII 字符。

相似回答
大家正在搜