0

我需要将 PyInt 转换为 C int。在我的代码中

count=PyInt_FromSsize_t(PyList_Size(pValue))

pValue 是一个 PyObject,PyList。我遇到的问题是 PyList_Size 没有返回正确的列表大小(计数应该是 5,但它给了我 600 万),或者数据类型存在问题,因为我在 C 代码中与 python 脚本接口。理想情况下,我希望 count 是 C int 类型。

我找到了返回长 C 数据类型的 python/c API……这不是我想要的……任何人都可以指出正确的方法或 API?

4

1 回答 1

3

返回一个位于内存中的PyInt_FromSsize_t()成熟 Pythonint对象并返回它的内存地址——这就是 600 万个数字的来源。您只想获取返回的标量PyList_Size()并将其转换为 C 整数,我认为:

count = (int) PyList_Size(pValue)

如果列表可能很长,您可能要考虑改为counta long,在这种情况下,您可以改为转换为该特定类型。

注意:计数-1意味着 Python 在尝试测量列表长度时遇到了异常。以下是您应该阅读以了解如何处理异常的文档:

http://docs.python.org/c-api/intro.html#exceptions

于 2011-11-24T20:32:32.477 回答