【发布时间】:2018-06-04 09:30:03
【问题描述】:
我是 ctypes 的初学者,我不知道如何在 python 中将 char 数组转换为字符串。我已经开始使用了:
create_string_buffer(bytes(var, 'utf8')) 填充一个数组,但没有运气使用“byref()”将其作为字符串返回。
如果有人知道您将成为救生员。提前致谢!
【问题讨论】:
我是 ctypes 的初学者,我不知道如何在 python 中将 char 数组转换为字符串。我已经开始使用了:
create_string_buffer(bytes(var, 'utf8')) 填充一个数组,但没有运气使用“byref()”将其作为字符串返回。
如果有人知道您将成为救生员。提前致谢!
【问题讨论】:
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'
注意事项:
byref参与【讨论】:
byref(cp) 获取它,你得到对象 str(cp.value) 最终返回所需的字符串/路径我没有知道它为什么会起作用,所以如果有人能详细说明一下这种蟒蛇的疯狂,我会很感激。谢谢