gpt4 book ai didi

python swig 字符串到 char* 的转换

转载 作者:太空宇宙 更新时间:2023-11-04 04:35:32 25 4
gpt4 key购买 nike

我正在处理一个使用 python SWIG 模块的项目。该模块有一个功能:

void func(char* pin, unsigned long len);

像这样从 python 中调用:

key = "\x42\x1d\xd7"
modul.func(key)

奇怪的是传入数组的大小是 4 而不是 3。最后一个字符 (d7) 被转换为两个字符 (c3 97)。我注意到如果字节设置了最高位,那么它会扩展为两个字节。我想这与字符串编码等有关。

还有其他方法可以将“\x42\x1d\xd7”传递给 SWIG 模块函数吗?

换句话说:我需要一种在 python 中创建字符串的方法,它有点格式错误。它只需要 3 个字节 [0x42, 0x1d, 0xd7]

最佳答案

你的意思是说你想通过\x42\x1d\xd7没有将其转换为 unicode?

您遇到的问题是因为 \x42\x1d\xd7传递给 modul.func() 时转换为 'utf-8' .

你可以通过做 -

key = "\x42\x1d\xd7"
key.encode('utf-8').decode('unicode-escape')
>> 'B\x1d\xc3\x97'

对于您的问题,您可以停止对 key 的编码/解码。由 python 变量,通过附加 r到字符串的定义如下 -

key = r"\x42\x1d\xd7"

这告诉 python 解释器读取字符串 raw .试试看。

关于python swig 字符串到 char* 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30894770/

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