从DLL返回的char 转换为Python字符串

我试图将C样式const char []字符串指针(从DLL返回)转换为Python兼容的字符串类型。 但是当Python27执行时:

import ctypes charPtr = ctypes.cast( "HiThere", ctypes.c_char_p ) print( "charPtr = ", charPtr ) 

我们得到: charPtr = c_char_p('HiThere')

也许某些事情无法正确评估。 我的问题是:

  1. 应该如何将此charPtr转换为兼容Python的可打印字符串?
  2. 是刚才提到的演员操作应该做什么?

ctypes.cast()用于将一个ctype实例转换为另一个ctype数据类型。 你不需要它将它转换为python字符串。 只需使用“.value”即可在python字符串中获取它。

 >>> s = "Hello, World" >>> c_s = c_char_p(s) >>> print c_s c_char_p('Hello, World') >>> print c_s.value Hello, World 

更多信息在这里

如果设置ctypes函数的argtypesrestype属性,它们将返回正确的Python对象而无需强制转换。

这是一个调用C运行timectime函数的示例:

 >>> from ctypes import * >>> m=CDLL('msvcrt') >>> t=c_long(0) >>> m.time(byref(t)) 1326700130 >>> m.ctime(byref(t)) # restype not set 6952984 >>> m.ctime.restype=c_char_p # set restype correctly >>> m.ctime(byref(t)) 'Sun Jan 15 23:48:50 2012\n'