2017-08-14 78 views
1

使用CFFI library for Python,我试图将一个Python字符串转换成char *,以便我可以传递它到一个接受char *的C函数。我似乎无法弄清楚正确的咒语是什么。CFFI:TypeError:ctype'char []'的初始值设定项必须是字节或列表或元组,而不是str

考虑这个例子:

>>> from cffi import FFI 
>>> ffi = FFI() 
>>> ffi.new("char[]", "bob") 

结果是:

TypeError: initializer for ctype 'char[]' must be a bytes or list or tuple, not str 

下无法正常工作或:

>>> ffi.new("char*", "bob") 

它说:

TypeError: initializer for ctype 'char' must be a bytes of length 1, not str 
+0

仅供参考 - 我已经在问题标题中包含了CFFI,因为还有其他方法可以在Python中获取此错误。据我所知,这是第一次针对这个特定的错误和Python中的CFFI库问及。 – 010110110101

+2

选择一个编码,然后选择“bob”.encode('ascii')'你的str - 或者使用'b“bob”'如果它是字面值 – o11c

回答

0

o11c已经解决了这个问题:

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

相关问题