Pet*_* Li 8 c python string ctypes
我试图将C样式const char []字符串指针(从DLL返回)转换为Python兼容的字符串类型.但是当Python27执行时:
import ctypes
charPtr = ctypes.cast( "HiThere", ctypes.c_char_p )
print( "charPtr = ", charPtr )
Run Code Online (Sandbox Code Playgroud)
我们得到: charPtr = c_char_p('HiThere')
也许某些事情无法正确评估.我的问题是:
Raj*_*n T 11
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
Run Code Online (Sandbox Code Playgroud)
更多信息在这里
如果设置函数的argtypes或restype属性ctypes,它们将返回正确的Python对象而无需强制转换.
这是一个调用C运行时time和ctime函数的示例:
>>> 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'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19365 次 |
| 最近记录: |