Casting Into A Python String From A Char[] Returned By A DLL
I am attempting to cast a C style const char[] string pointer (returned from a DLL) into a Python compatible string type. but when Python27 executes: import ctypes charPtr = ctyp
Solution 1:
ctypes.cast() is used to convert one ctype instance to another ctype datatype. You don't need it To convert it to python string. Just use ".value" to get it in python string.
>>> s = "Hello, World"
>>> c_s = c_char_p(s)
>>> print c_s
c_char_p('Hello, World')
>>> print c_s.value
Hello, World
More info here
Solution 2:
If you set the argtypes
or restype
attributes of ctypes
functions, they will return the right Python object without the need for a cast.
Here's an example calling the C-runtime time
and ctime
functions:
>>> 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'
Post a Comment for "Casting Into A Python String From A Char[] Returned By A DLL"