CFFI:TypeError:ctype'char []'的初始化程序必须是字节或列表或元组,而不是str

010*_*101 4 python ffi python-cffi

使用用于PythonCFFI库,我试图将Python字符串哄骗到char *中,以便将其传递给接受char *的C函数。我似乎无法弄清楚什么是正确的咒语。

考虑以下示例:

>>> from cffi import FFI
>>> ffi = FFI()
>>> ffi.new("char[]", "bob")
Run Code Online (Sandbox Code Playgroud)

结果是:

TypeError: initializer for ctype 'char[]' must be a bytes or list or tuple, not str
Run Code Online (Sandbox Code Playgroud)

以下内容也不起作用:

>>> ffi.new("char*", "bob")
Run Code Online (Sandbox Code Playgroud)

它说:

TypeError: initializer for ctype 'char' must be a bytes of length 1, not str
Run Code Online (Sandbox Code Playgroud)

fot*_*sky 5

o11c已经解决了这个问题:

明确选择一种编码,例如"bob".encode('ascii')。这似乎在Python 3中只是必要的。