簡體   English   中英

Cython將字符串傳遞給C作為字節

[英]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。

以下是傳遞字節數組的兩種方法:

  • 選項1:從一開始將PATH定義為bytes對象:
    • PATH = b'/usr/lib/libnx.so' ,或:
    • PATH = 'usr/lib/libnx.so'.encode()
  • 選項2:傳遞時將PATH編碼為字節數組:
    • load(PATH.encode())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM