从python中的c dll获取char数组作为字符串

时间:2018-06-04 09:30:04

标签: python c ctypes

我是ctypes的初学者,我无法弄清楚如何在python中将char数组转换为字符串。我已经开始使用:

create_string_buffer(bytes(var, 'utf8'))填充数组,但没有运气使用“byref()”将其作为字符串返回。

如果有人知道你会成为一个救生员。提前谢谢!

1 个答案:

答案 0 :(得分:0)

ctypes 页面:[Python]: ctypes - A foreign function library for Python
没有看到一些代码就很难说,但这里有一个例子:

>>> import sys
>>> import ctypes
>>> "Python {:s} on {:s}".format(sys.version, sys.platform)
'Python 3.5.2 (default, Nov 23 2017, 16:37:01) \n[GCC 5.4.0 20160609] on linux'
>>> src = "some dummy Python string"
>>> src_charp = ctypes.create_string_buffer(src.encode())
>>> dst_initial = b"Just "
>>> dst_charp = ctypes.create_string_buffer(len(dst_initial) + len(src) + 1)
>>> dst_charp
<ctypes.c_char_Array_25 object at 0x7fe6c41209d8>
>>> dst_charp.value
b''
>>> for idx, c in enumerate(dst_initial):
...     dst_charp[idx] = c
...
>>> dst_charp.value
b'Just '
>>> ctypes.CDLL(None).strcat(dst_charp, src_charp)
32414128
>>> dst_charp
<ctypes.c_char_Array_25 object at 0x7fe6c41209d8>
>>> dst_charp.value
b'Just some dummy Python string'
>>> dst = dst_charp.value.decode()
>>> dst
'Just some dummy Python string'

备注