为什么TypeError:使用cffi时需要整数?

2024-04-26 04:59:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我用的是cffi,有个奇怪的错误。我的函数获取一个字节数组并解密它,然后从中创建一个可读的字符串。你知道吗

buffer = [b'\x02', b'+', .... and more]
c_string = ffi.new("char[]", 64)
clib.decode_my_string(buffer, len(buffer), c_string, len(c_string))
print(c_string)

我们期待看到的是一根英语弦。Python说:

TypeError: an integer is required

以下是这些事物的定义:

print(clib.decode_my_string)
print(c_string)
print(buffer)
print(len(c_string))
print(len(buffer))

显示:

<cdata 'uint8_t(*)(uint8_t *, uint8_t, char *, uint16_t)' 0x7f6965aa7a50>
<cdata 'char[]' owning 64 bytes>
[b'\x02', b'+', .... and more]
64
13

从指纹中,我们可以看到这个函数包含两个整数。一个8位整数和一个16位整数。我对这些参数做了什么错误吗?你知道吗

完全回溯:

Traceback (most recent call last):
  File "/home/me/myproject/utilitieslib/tests/test_mymodule.py", line 187, in test_decode_my_string
    x = mymodule.decode_my_string(response)
  File "/home/me/myproject/utilitieslib/mymodule.py", line 242, in decode_my_string
    clib.decode_my_string(buffer, len(buffer), c_string, len(c_string))
TypeError: an integer is required

Tags: and函数stringlenmybuffer错误clib

热门问题