将 bytearray 转换为 array.array('B')

tol*_*eek 2 python arrays python-3.x

我有一个图像数据,主要如下所示:

array('B', [255,216,255...])
Run Code Online (Sandbox Code Playgroud)

它属于类型array.array('B')

由于该数据要通过通信通道发送,因此有必要将该数据转换为类型:bytearray

我将数据转换为字节数组:

data1 = bytearray(CompressedImage.data)
Run Code Online (Sandbox Code Playgroud)

但是,我现在需要获取array.array('B')数据的原始形式。

到目前为止,我找到了byte()函数decode(),但仍然无法反序列化原始数据形式。

wim*_*wim 5

不需要编码/解码,因为我们在这里处理原始字节。

您可以将字节数组直接传递给数组初始值设定项。您仍然需要在初始化程序中指定类型代码,因为原始字节本身无法告诉您。“B”代表1字节unsigned int,即8位颜色深度。

>>> from array import array
>>> a = array("B", [255, 216, 255])
>>> data1 = bytearray(a)
>>> a1 = array("B", data1)
>>> a1 == a
True
Run Code Online (Sandbox Code Playgroud)

如果您有要填充的现有数组实例,则可以使用frombytes

>>> a2 = array("B")
>>> a2.frombytes(data1)
>>> a == a1 == a2
True
Run Code Online (Sandbox Code Playgroud)