Python中的Cextension:将wchar字符串转换为Python值

2024-09-28 01:32:38 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python的C扩展中,我可以使用Py_BuildValue()将字符串转换成Python值,如下所示:Py_BuildValue("s", str)。但是,如果字符串是wchar数组,则不能使用Py_BuildValue("s", str)。在

我想我可以这样使用PyUnicode:

PyObject* pb=PyUnicode_FromUnicode( (const Py_UNICODE*)(str), wcslen(str) );
PyObject *val = Py_BuildValue("o", pb);

但是,它不起作用。如何将wchar字符串转换为Python值?在


Tags: 字符串pyunicodeval数组pyobjectpbstr
1条回答
网友
1楼 · 发布于 2024-09-28 01:32:38

我想你不需要把PyUnicode_FromUnicode和{}结合起来。在

下面的pb已经是一个Python unicode对象。在

PyObject* pb=PyUnicode_FromUnicode( (const Py_UNICODE*)(str), wcslen(str) );

使用Py_BuildValue来处理它是多余的,但它是无害的。 我认为您的问题是由格式不正确引起的o。它应该是O。在

您还可以使用Py_BuildValue将Unicode(UCS-2或UCS-4)数据的空终止缓冲区转换为Python Unicode对象。
例如:

^{pr2}$

更多

相关问题 更多 >

    热门问题