繁体   English   中英

将PyInt转换为C Int

[英]convert PyInt to C Int

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

count=PyInt_FromSsize_t(PyList_Size(pValue))

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

我发现python / c API返回了我很长的C数据类型...这不是我想要的...任何人都可以将我指向正确的方法或API?

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

count = (int) PyList_Size(pValue)

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM