这是Python的问题.我有一个变量A.
>>> A
<Swig Object of type 'uint16_t *' at 0x8c66fa0>
>>> help(A)
class PySwigObject(object)
Swig object carries a C/C++ instance pointer
Run Code Online (Sandbox Code Playgroud)
A引用的实例是一个连续的数组uint16 [3],问题是从Python获得对该数组的访问.
在Python中,我如何创建一个长度为3的变量B,它允许我对包含在A中的指针所指向的相同内存进行读/写访问?
我认为这个问题有两个部分:
- 如何将指针从A中取出(我认为0x8c66fa0指向Swig对象,而不是包装对象).
- 如何使用内存指针和已知数据类型初始化某种Python数组.(Numpy有一个frombuffer方法,但似乎需要的是一个记忆方法.)也许需要一些演员.
我认为这应该很容易,但我已经阅读和黑客超过一天了!
为了解决第二部分,我想一个例子可以这样开始:
>>> import numpy
>>> C = numpy.ascontiguousarray([5,6,7],"uint16")
>>> C
array([5, 6, 7], dtype=uint16)
>>> C.data
<read-write buffer for 0x8cd9340, size 6, offset 0 at 0x8902f00>
Run Code Online (Sandbox Code Playgroud)
然后尝试使用"0x8902f00"和"uint16"构建B(任何矢量类型)并测试是否更改B [2]会导致C [2]中的更改.
非常感谢您的建议或明确的例子.
问候,
欧文