5
這是Python的問題。我有一個變量A在Python中,如何訪問由SWIG包裝的uint16 [3]數組(即展開PySwigObject)?
>>> 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指向痛飲對象,而不是被包裝的對象)。
- 如何使用內存指針和已知數據類型初始化某種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>
然後嘗試建立如果改變b。使用「0x8902f00」和「UINT16」和試驗(無論矢量型)乙[2]引起C [2]的變化。
非常感謝您的建議或一個明確的例子。
問候,
歐文