mam pythonowego słownika z następujących pozycji:Konwersja słowniku Pythonowi struktury ctypes
Tmp={'Name1': [10.0, 20.0, 'Title1', 1], 'Name2': [5.0, 25.0, 'Title2', 2]}
że chce przekazać to C-funkcją których funkcja jest określona jako:
struct CA {
char *Keys;
float *Values;
char *Title;
int Index;
};
void myfunc (struct CA *in, int n);
Po stronie Pythona utworzyłem równoważną strukturę ctypes:
class CA(ctypes.Structure):
_fields_ = [("Keys", ctypes.POINTER(ctypes.c_char_p)),
("Values", ctypes.POINTER(ctypes.c_float)),
("Title", ctypes.POINTER(ctypes.c_char_p)),
("Index", ctypes.c_int)]
i utworzyłem tablicę urzędów certyfikacji za pomocą:
CAarray = CA * 2
Teraz chcę przypisać TMP do CAarray w pętli tak, że
k = Tmp.keys()
for (j, _) in enumerate(k):
CAarray[j].Keys = _
CAarray[j].Values = Tmp[_][:2]
CAarray[j].Title = Tmp[_][2]
CAarray[j].Index = Tmp[_][3]
I zostały stara się uzyskać składnia poprawne, a nie udało do tej pory. Wsparcie.
Po stronie, czy istnieje rutyna/lib, które mogą obsługiwać konwersję pomiędzy zmiennymi Pythona i zmiennymi ctypes?
Niestety rolika, to nie działa. Kiedy ca_array zostanie przekazany do funkcji C myfunc (patrz zapytanie), otrzymam wszystkie pomieszane wartości. Zauważ, że pierwszym argumentem myfunc jest tablica struktury CA. – Rak