在使用Cython封装C语言时,我尝试将C中的void*
类型转换为python中的string
,但是我不知道如何将void*
类型转换为{{ 1}},将C string
转换为python int
时,就像(类的一部分):
Py_ssize_t
当我要将其转换为cpdef int peek_tail(self):
cdef int value = <Py_ssize_t>cqueue.queue_peek_tail(self._c_queue)
时,如何定义它?
string
cpdef ? peek_tail(self):
cdef ? value = <?>cqueue.queue_peek_tail(self._c_queue)
是我想要的。是否有文件?
答案 0 :(得分:1)
您可以在char*
上使用cdef
,但是由于您使用cpdef
,所以您也可以对字节(py2)或unicode(py3)执行str
。我相信queue_peek_tail
的回报总是Py_ssize_t
。
有关更多具体信息,请参见here。尤其是线
通常来说:除非您知道自己在做什么,否则请尽可能避免使用C字符串,而应使用Python字符串对象。