将数据复制到缓冲区(字节数组)

时间:2019-02-06 17:44:00

标签: python python-bytearray

我正在尝试将数据blob(某些字节)复制到某个位置的较大块中。我可以很容易地用C做到这一点,但是现在我正在用Python做到这一点,我很好奇这样做的最佳/正确方法是什么。

我这样做的方式是:

struct.pack_into("p", buffer, pos, str(data))

其中数据和缓冲区的类型为字节数组。 Python不允许我将数据复制到缓冲区中而不将其转换为字符串(请参见上面的类型转换),因此我想知道将一个字节数组插入另一字节数组的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

bytearray对象是mutable sequences,您可以通过分配给切片来在给定位置将一个对象的内容复制到另一个对象:

buffer[pos:pos + len(data)] = data

此处struct.pack_into()无需使用。请注意,data可以是整数的任何可迭代值,只要它们在0-255范围内即可;它不必是bytesbytearray对象。

演示:

>>> buffer = bytearray(10)
>>> data = bytes.fromhex('deadbeef')
>>> pos = 3
>>> buffer[pos:pos + len(data)] = data
>>> buffer
bytearray(b'\x00\x00\x00\xde\xad\xbe\xef\x00\x00\x00')