将 Python 长整数转换为 C 字符数组



我正在使用 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 字符数组转换为 Python 长整数,给定任意基数,但我找不到执行反向操作的函数。

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

使用 PyObject_Str()(或 PyObject_Bytes() )并将生成的对象转换为char*

最新更新