2017-02-08 43 views
3

我需要在python中構建一個字符串並將其傳遞給包裝的C庫。的C LIB定義功能:Cython將字符串傳遞給C作爲字節

unsigned char load(char const *FileName) 

在.pyx文件:

def test(): 
    PATH = '/usr/lib/libnx.so' 
    PATH = <char*>PATH 
    load(PATH) 

,但我得到:TypeError: expected bytes, str found

我已經試過編碼Python字符串,但得到了同樣的錯誤。

+0

.encode()應該解決這個問題 –

回答

3

在Python中,str對象不是像C中那樣的字節數組。爲了得到它,必須對字符串進行編碼。默認值是UTF-8編碼,它與ASCII向後兼容。

下面是通過字節數組兩種方式:

  • 選項1:定義PATH是從一個bytes對象得到去:
    • PATH = b'/usr/lib/libnx.so',或:
    • PATH = 'usr/lib/libnx.so'.encode()
  • 選項2:將PATH編碼成字節arr唉,當你通過它:
    • load(PATH.encode())
+0

這就是它看起來像,但我得到了同樣的錯誤。 – BAR

+0

在'PATH.encode()'行 – BAR

+0

是的,但是錯誤行改變爲'load(PATH)' – BAR