【发布时间】:2012-01-06 00:38:13
【问题描述】:
如何使用readinto() 方法调用bytearray 内的偏移量,就像struct.unpack_from 的工作方式一样?
【问题讨论】:
标签: python io python-3.x buffer
如何使用readinto() 方法调用bytearray 内的偏移量,就像struct.unpack_from 的工作方式一样?
【问题讨论】:
标签: python io python-3.x buffer
您可以使用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')
【讨论】:
memoryview 类的示例,我认为它可以满足您的需求。