gpt4 book ai didi

python - Cython 将字符串作为字节传递给 C

转载 作者:太空狗 更新时间:2023-10-30 01:12:34 26 4
gpt4 key购买 nike

我需要在 python 中构建一个字符串并将其传递给包装的 C 库。 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 字符串进行编码,但得到了同样的错误。

最佳答案

在 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())

关于python - Cython 将字符串作为字节传递给 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42106562/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com