我如何使用readinto()
方法调用bytearray
内的偏移量,与struct.unpack_from
的工作方式相同?
答案 0 :(得分:12)
您可以使用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')