2017-08-14 105 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中是必要的。

相關問題