To jest pytanie Pythona. I mają zmiennąW języku Python, jak uzyskać dostęp do tablicy uint16 [3] zapakowanej przez SWIG (to znaczy odwijaj PySwigObject)?
>>> A
<Swig Object of type 'uint16_t *' at 0x8c66fa0>
>>> help(A)
class PySwigObject(object)
Swig object carries a C/C++ instance pointer
Instancja przekazanego przez to ciągłe Tablica uint16 [3], problemem jest uzyskanie dostępu do tej tablicy Pythonie.
W Pythonie, w jaki sposób mogę utworzyć zmienną B o długości 3, która daje mi dostęp do odczytu/zapisu do tej samej pamięci wskazanej przez wskaźnik zawinięty w A?
Myślę, że problem ma dwie części:
- Jak uzyskać wskaźnik OUT A. (myślę 0x8c66fa0 punkty haust obiektu, a nie zawinięty obiektu).
- Jak zainicjować jakiś rodzaj tablicy Python za pomocą wskaźnika pamięci i znanego typu danych. (Numpy ma metodę frombuffer, ale wydaje się, że potrzebna jest metoda frommemory.) Być może będzie potrzebna jakaś obsada.
To powinno być łatwe, myślę, ale czytałem i hakowałem dłużej niż jeden dzień!
Aby rozwiązać drugą część, myślę przykładem może rozpocząć się w ten sposób:
>>> 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>
następnie spróbuj zbudować B (niezależnie od ich typu wektorowego) przy użyciu „0x8902f00” i „uint16” i próbę jeśli zmienia B [2] powoduje zmiany w C [2].
Dziękujemy za sugestie lub wyraźny przykład.
Pozdrawiam,
Owen