1

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

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 字符数组,但也没有字符串函数可以处理长整数。似乎 C 处理 Python long int 的唯一方法是转换为 C int 类型,所有这些都会在我的应用程序中溢出。

4

1 回答 1

3

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

于 2012-04-21T23:21:58.543 回答