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

时间:2017-08-21 16:36:57

标签: python cffi

我使用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位的int和一个16位的int。我对这些参数做错了吗?

完整追溯:

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

0 个答案:

没有答案