我正在努力学习如何在Python中使用ctypes,我在文档中看到了这个例子
class Bar(Structure):
_fields_ = [("count", c_int), ("values", POINTER(c_void_p))]
bar = Bar()
bar.values = (c_void_p * 3)(1, 2, 3)
bar.count = 3
for i in range(bar.count):
print(bar.values[i])
这将打印
1
2
3
在上面的示例中,我实际想要的是将实际的python列表(如arr = [1,2,3]
(转换为兼容类型的bar.values
。有什么办法可以让我做到这一点吗?
如果我理解正确,您只需要基于变量而不是硬编码数字为values
赋值。
然后这将工作
arr = [1, 2, 3, 4]
bar = Bar()
bar.values = (c_void_p * len(arr))(*arr)
bar.count = len(arr)