2017-02-08 7 views
3

私はPythonで文字列を構築し、それをラップされたCライブラリに渡す必要があります。 .pyxファイルでBytesとしてCythonに渡す文字列

unsigned char load(char const *FileName) 

:C libには、関数を定義

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:取得-行くからbytes対象となるPATHを定義します。
    • PATH = b'/usr/lib/libnx.so'、または:
    • PATH = 'usr/lib/libnx.so'.encode()ここ

      は、バイトの配列を渡すには、2つの方法があります

  • オプション2:PATHをバイトarrにエンコードするあなたはそれ渡すときAY:)
    • load(PATH.encode())
+0

それはそれはのように思えるものですが、私は同じエラーを取得することを修正する必要があります。 – BAR

+0

'PATH.encode()'行 – BAR

+0

はい、エラー行は 'load(PATH)'の行に変更されました – BAR

関連する問題