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



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

我这样做的方式是:

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

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

bytearray对象是可变序列,您可以通过分配给切片,将一个对象的内容复制到给定位置的另一个序列中:

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'x00x00x00xdexadxbexefx00x00x00')

最新更新