我有以下條目Python字典:轉換Python字典到ctypes的結構
Tmp={'Name1': [10.0, 20.0, 'Title1', 1], 'Name2': [5.0, 25.0, 'Title2', 2]}
欲這個傳遞給C-函數,其中所述函數被定義爲:
struct CA {
char *Keys;
float *Values;
char *Title;
int Index;
};
void myfunc (struct CA *in, int n);
在Python方面,我創建了一個等效的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)]
並創建了一個CA數組:
CAarray = CA * 2
現在我想TMP在一個循環中,使得
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]
我一直在努力,以獲得正確的語法指定CAarray,至今都失敗了。幫幫我。
另一方面,是否有任何例程/ lib可以處理Python變量和ctypes變量之間的相互轉換?
對不起rolika,這是行不通的。當ca_array傳遞給C函數myfunc(請參閱查詢)時,我得到所有亂七八糟的值。請注意,myfunc的第一個參數是一個結構CA的數組。 – Rak