从python中的c dll获取字符数组作为字符串
我是ctypes的初学者,我不知道如何在python中将char数组转换为字符串。我已经开始使用:从python中的c dll获取字符数组作为字符串,python,c,ctypes,Python,C,Ctypes,我是ctypes的初学者,我不知道如何在python中将char数组转换为字符串。我已经开始使用: create_string_buffer(bytes(var,'utf8'))来填充数组,但使用“byref()”无法将其作为字符串返回 如果有人知道你会成为救生员。提前谢谢 ctypes页: 如果没有看到一些代码,很难判断,但下面是一个示例: 导入系统 >>>导入ctypes >>>“Python{:s}on{:s}”。格式(sys.version,sys.platform) “Python 3
create_string_buffer(bytes(var,'utf8'))
来填充数组,但使用“byref()”无法将其作为字符串返回
如果有人知道你会成为救生员。提前谢谢 ctypes页:如果没有看到一些代码,很难判断,但下面是一个示例: 导入系统 >>>导入ctypes >>>“Python{:s}on{:s}”。格式(sys.version,sys.platform) “Python 3.5.2(默认值,2017年11月23日,16:37:01)\n[GCC 5.4.0 20160609]在linux上” >>>src=“一些伪Python字符串” >>>src\u charp=ctypes.create\u string\u buffer(src.encode()) >>>dst_初始值=b“刚刚” >>>创建字符串缓冲区(len(dst_首字母)+len(src)+1) >>>夏普酒店 >>>dst_charp.value b“ >>>对于idx,枚举中的c(dst_首字母): ... dst_charp[idx]=c ... >>>dst_charp.value 只是 >>>ctypes.CDLL(无).strcat(dst_charp,src_charp) 32414128 >>>夏普酒店 >>>dst_charp.value b'只是一些伪Python字符串' >>>dst=dst_charp.value.decode() >>>dst '只是一些伪Python字符串' 注释:
- 使用作为示例。有关如何操作的更多详细信息,请查看
- 没有涉及到
byref
>>> 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'