如何将 pyunicodeobject 类型转换为 pybytesobject 类型?
例子:
function(PyBytesObject* byteobj){
....operation..
}
PyUnicodeObject* Uniobj;
function((PyBytesObject*) Uniobj);
结果出现总线错误。
如何将 pyunicodeobject 类型转换为 pybytesobject 类型?
例子:
function(PyBytesObject* byteobj){
....operation..
}
PyUnicodeObject* Uniobj;
function((PyBytesObject*) Uniobj);
结果出现总线错误。
您需要像在 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
)。
不要忘记在进行编码时检查返回码,并在完成后释放对字节对象的引用。