将Python长整数转换为C char数组

时间:2012-04-21 23:12:09

标签: python c python-c-api python-c-extension

我正在使用Python / C API并希望C函数采用Python长整数参数nPyLong,并将其转换为基数为10的char数组nString。是我想做的事情的片段。

PyObject *nPyLong;
PyArg_ParseTuple(args, "O", nPyLong);

PyLong_Check(nPyLong) // returns true

const char *nString;
// This function doesn't exist but demonstrates the functionality
PyLong_AsCharArray(&nString, nPyLong, 10);

API参考提到了一个函数PyObject* PyLong_FromString(char *str, char **pend, int base),它将C char数组转换为Python长整数,给定任意基数,但我找不到反函数的函数。

这可能吗?一个想法是将Python长整数转换为Python字符串对象,然后转换为C char数组,但也没有字符串函数来处理长整数。似乎C处理Python long int的唯一方法是转换为C int类型,所有这些都会在我的应用程序中溢出。

1 个答案:

答案 0 :(得分:3)

使用PyObject_Str()(或PyObject_Bytes())并将结果对象转换为char*