如何将pyunicodeobject类型转换为pybytesobject类型?
示例:
function(PyBytesObject* byteobj){
....operation..
}
PyUnicodeObject* Uniobj;
function((PyBytesObject*) Uniobj);
结果导致了总线错误。
答案 0 :(得分: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
开头的函数)。
执行编码时不要忘记检查返回码,并在完成后释放对bytes对象的引用。