从 ctypes 的 c_char_p 中检索字符串

zel*_*ell 2 python ctypes

在Python中,我有一个ctypes.c_char_p的字符串“Hello, world”。看来 python 自动将其编码为一个数字(请从我的 ipython 控制台参见下文)。如何从 ctypes.c_char_p 对象中检索字符串,即“Hello, world”?

In [45]: from ctypes import c_char_p

In [46]: c_char_p("Hello, World")
Out[46]: c_char_p(4508383228)
Run Code Online (Sandbox Code Playgroud)

mha*_*wke 6

正如评论中已经提到的,尽管可能不像某些人要求的那样明确,但该.value属性会转换ctypes.c_char_p为 Python 字符串。

此代码往返 Python 字符串到 a ctypes.c_char_p,然后返回 Python 字符串:

>>> p = c_char_p("Hello, World")
>>> p
c_char_p(140323010068388)
>>> type(p)
<class 'ctypes.c_char_p'>
>>> s = p.value
>>> s
'Hello, World'
>>> type(s)
<type 'str'>
Run Code Online (Sandbox Code Playgroud)