6
如何使用readinto()
方法調用bytearray
中的偏移量,方法與struct.unpack_from
的工作方式相同?讀入偏移量的字節數組?
如何使用readinto()
方法調用bytearray
中的偏移量,方法與struct.unpack_from
的工作方式相同?讀入偏移量的字節數組?
您可以使用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')
也可以與struct.unpack_from
和struct.pack_into
使用memoryview
對象。例如:
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')
我的目的是直接讀入在偏移的ByteArray,並避免所有的中間複製。 –
我已經編輯了我的答案,包括一個使用'memoryview'類的例子,我認爲這是你想要的。 – srgerg
這種記憶視圖形式似乎完成我想要的。如果我用struct.unpack_into做了一個類似的事情,並且使用了一個memoryview而不是offset,它會是一樣的嗎?如果是這種情況,請刪除您的其他答案以關注此問題。 –