[英]Cython Pass String To C as Bytes
我需要在python中構建一個字符串並將其傳遞給包裝的C lib。 C lib定義了這個函數:
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字符串,但得到相同的錯誤。
在Python中, str
對象不是C中的字節數組。為此,您必須對字符串進行編碼。 默認值為UTF-8編碼,向后兼容ASCII。
以下是傳遞字節數組的兩種方法:
PATH
定義為bytes
對象:
PATH = b'/usr/lib/libnx.so'
,或: PATH = 'usr/lib/libnx.so'.encode()
PATH
編碼為字節數組:
load(PATH.encode())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.