我有一个Python字典,其中包含以下条目:
在Python端,我创建了一个等效的ctypes结构体如下:
现在我想在循环中将Tmp分配给CAarray。
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分配给CAarray。
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]
我一直在努力理解这个语法,但是一直失败。请帮忙。
此外,是否有任何程序或库可以处理Python变量和ctypes变量之间的互相转换?