0

如何将 pyunicodeobject 类型转换为 pybytesobject 类型?

例子:

function(PyBytesObject* byteobj){
....operation..
}

PyUnicodeObject* Uniobj;

function((PyBytesObject*) Uniobj);

结果出现总线错误。

4

1 回答 1

2

您需要像在 Python 中那样对其进行编码。对于 utf-8 使用:

PyObject* PyUnicode_AsUTF8String(PyObject *unicode)

返回值:新引用。
使用 UTF-8 对 Unicode 对象进行编码,并将结果作为 Python 字节对象返回。错误处理是“严格的”。如果编解码器引发异常,则返回 NULL。

或者,如果您希望它采用 utf-16 或其他一些编码,那么也可以使用 api。请参阅http://docs.python.org/py3k/c-api/unicode.html上的文档(搜索以 开头的函数PyUnicode_As)。

不要忘记在进行编码时检查返回码,并在完成后释放对字节对象的引用。

于 2010-05-17T11:54:07.607 回答