0

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

我这样做的方式是:

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

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

4

1 回答 1

2

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'\x00\x00\x00\xde\xad\xbe\xef\x00\x00\x00')
于 2019-02-06T17:48:28.400 回答