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 に答える