这是 Python 问题。我有一个变量 A
>>> A
<Swig Object of type 'uint16_t *' at 0x8c66fa0>
>>> help(A)
class PySwigObject(object)
Swig object carries a C/C++ instance pointer
A 引用的实例是一个连续数组 uint16[3] ,问题是要从 Python 访问该数组。
在 Python 中,我怎样才能创建一个长度为 3 的变量 B,让我可以读/写访问 A 中包含的指针所指向的同一内存?
我认为这个问题有两个部分:
- 如何从 A 中获取指针。(我认为 0x8c66fa0 指向 Swig 对象,而不是包装对象)。
- 如何使用内存指针和已知数据类型初始化某种 Python 数组。(Numpy 有一个 frombuffer 方法,但似乎需要一个 frommemory 方法。)也许需要一些转换。
我认为这应该很容易,但我已经阅读和破解了一天多!
为了解决第二部分,我认为一个例子可以这样开始:
>>> 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>
然后尝试使用“0x8902f00”和“uint16”构建B(任何向量类型)并测试更改B[2]是否会导致C[2]发生更改。
非常感谢您的建议或一个明确的例子。
问候,
欧文