Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 以偏移量读入字节数组?_Python_Io_Python 3.x_Buffer - Fatal编程技术网

Python 以偏移量读入字节数组?

Python 以偏移量读入字节数组?,python,io,python-3.x,buffer,Python,Io,Python 3.x,Buffer,如何使用方法调用a内部的偏移量,方法调用的方式与此相同?您可以使用a来完成此工作。例如: dest = bytearray(10) # all zero bytes v = memoryview(dest) ioObject.readinto(v[3:]) print(repr(dest)) dest = bytearray(10) # all zero bytes v = memoryview(dest) struct.pack_into("2c", v[3:5], 0, b'\x07',

如何使用方法调用a内部的偏移量,方法调用的方式与此相同?

您可以使用a来完成此工作。例如:

dest = bytearray(10) # all zero bytes
v = memoryview(dest)
ioObject.readinto(v[3:])
print(repr(dest))
dest = bytearray(10) # all zero bytes
v = memoryview(dest)
struct.pack_into("2c", v[3:5], 0, b'\x07', b'\x08')
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\u from
struct.pack\u一起使用。例如:

dest = bytearray(10) # all zero bytes
v = memoryview(dest)
ioObject.readinto(v[3:])
print(repr(dest))
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
类的示例,我认为这正是您想要的。这个memoryview表单似乎完成了我想要的。如果我对struct.unpack_执行类似的操作,并使用memoryview而不是偏移量,它会是相同的吗?如果是这种情况,请删除其余的答案以集中精力。谢谢,我正在检查是否需要添加此答案