我正在使用python bindings
由swig
. 我想将任意 python 字符串传递给 C-Library。此字符串包含不可打印的字符,例如:
\xff\x0A\82
C-Library 使用 anchar
来处理这些数据。为了进行转换,我使用以下 swig 类型图:
%typemap(in) (char *data, int size)
{
if(!PyUnicode_Check($input))
{
PyErr_SetString(PyExc_ValueError, "String value required");
return NULL;
}
$1 = PyBytes_AsString(PyUnicode_AsUTF8String($input));
$2 = PyUnicode_GetSize($input);
}
这部分有效。只有0x00和0x7F之间的值有效。值0xFF被转换为错误值,即0xC3。
有没有人建议为0x00到0xFF完成这项工作?