如何将python列表强制转换为C中void类型的指针



我正在努力学习如何在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)

相关内容

  • 没有找到相关文章

最新更新