问题:
- 固定大小记录的二进制数据
- 想使用 struct.unpack_from 和 struct.pack_into 来操作二进制数据
- 不想要数据副本
- 希望多个视图进入内存以简单地偏移计算等。
- 数据可以在 array.array bytearray 或 ctypes 字符串缓冲区中
我试图做的事情:
part1 = buffer(binary_data, 0, size1)
part2 = buffer(binary_data, size1, size2)
part3 = buffer(binary_data, size1 + size2) # no size is given for this one as it should consume the rest of the buffer
struct.pack_into('I', part3, 4, 42)
这里的问题是 struct.pack_into 抱怨缓冲区是只读的。我研究了内存视图,因为它们可以创建读/写视图,但是它们不允许您像缓冲区函数那样指定偏移量和大小。
如何将多个零拷贝视图放入一个可读、可写并且可以使用 struct.unpack_from 和 struct.pack_into 访问/修改的字节缓冲区