gpt4 book ai didi

python - 定义 c_char Python 的数组长度

转载 作者:行者123 更新时间:2023-11-30 19:44:24 24 4
gpt4 key购买 nike

在 C 头文件中,我有:

long param_API test(    
___OUT_ char Text[41]
)

在 Python 代码中导入 ctypes 后,我调用 test:

out_char = (ctypes.c_char)()
def getRes():
result = lib.test(out_char)
return result

但是我在日志文件中收到此错误:

output parameter is NULL

我猜测试函数没有足够的空间来写入输出。我在这里做错了什么?如何设置 out_char 的长度?

最佳答案

要创建数组,请使用:

out_char = (ctypes.c_char * 41)()

这将创建一个数组对象的实例:

>>> (ctypes.c_char*41)()
<__main__.c_char_Array_41 object at 0x0000000002891048>

您可以访问各个元素:

>>> out_char[0]
b'\x00'
>>> out_char[40]
b'\x00'
>>> out_char[41]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: invalid index

对于c_char,整个缓冲区:

>>> out_char.raw
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x
00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'

或者只是以 null 结尾的部分:

>>> out_char.value
b''

关于python - 定义 c_char Python 的数组长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28269046/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com