如何在偏移量处读取字节数组?
我该如何使用 readinto()
方法,将数据读入一个 bytearray
的某个偏移位置,就像 struct.unpack_from
那样?
1 个回答
20
你可以使用一个叫做 memoryview
的东西来完成这个任务。比如:
dest = bytearray(10) # all zero bytes
v = memoryview(dest)
ioObject.readinto(v[3:])
print(repr(dest))
假设 iObject.readinto(...)
读取了字节 1、2、3、4 和 5,那么这段代码会打印:
bytearray(b'\x00\x00\x00\x01\x02\x03\x04\x05\x00\x00')
你还可以把 memoryview
对象和 struct.unpack_from
以及 struct.pack_into
一起使用。比如:
dest = bytearray(10) # all zero bytes
v = memoryview(dest)
struct.pack_into("2c", v[3:5], 0, b'\x07', b'\x08')
print(repr(dest))
这段代码会打印
bytearray(b'\x00\x00\x00\x07\x08\x00\x00\x00\x00\x00')