2012-04-21 5 views
0

파이썬/C API를 사용하고 있으며 C 함수가 파이썬 긴 정수인 인수 nPyLong을 가져 와서 기수 배열 nString을 밑으로 10 자로 변환하려고합니다. 여기 내가하고 싶은 일의 발췌 문장입니다.파이썬 긴 정수를 C char 배열로 변환합니다.

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 참조는 임의의베이스 주어진 파이썬 긴 정수로 C의 문자 배열을 변환하는 기능 PyObject* PyLong_FromString(char *str, char **pend, int base)을 언급하고 있지만, I는 역을 수행하는 기능을 찾을 수있다.

이것이 가능합니까? 하나의 아이디어는 파이썬 긴 정수를 파이썬 문자열 객체로 변환 한 다음 C char 배열로 변환하는 것이지만 긴 int를 처리 할 문자열 함수도 없습니다. C에서 Python long int를 처리하는 유일한 방법은 C 응용 프로그램에서 오버플로되는 C int 유형으로 변환하는 것입니다.

답변

2

PyObject_Str() (또는 PyObject_Bytes())을 사용하고 결과 개체를 char*으로 변환합니다.

+0

와우, 이것은 내가 생각했던 것보다 훨씬 쉽습니다. 그리고 접미사 'L'도 반환하지 않습니다! – Vortico

관련 문제