开发者社区> 问答> 正文

C字符串转换为Python字符串

怎样将C中的字符串转换为Python字节或一个字符串对象?

展开
收起
哦哦喔 2020-04-17 18:15:43 2913 0
1 条回答
写回答
取消 提交回答
  • C字符串使用一对 char * 和 int 来表示, 你需要决定字符串到底是用一个原始字节字符串还是一个Unicode字符串来表示。 字节对象可以像下面这样使用 Py_BuildValue() 来构建:
    
    char *s;     /* Pointer to C string data */
    int   len;   /* Length of data */
    
    /* Make a bytes object */
    PyObject *obj = Py_BuildValue("y#", s, len);
    如果你要创建一个Unicode字符串,并且你知道 s 指向了UTF-8编码的数据,可以使用下面的方式:
    
    PyObject *obj = Py_BuildValue("s#", s, len);
    如果 s 使用其他编码方式,那么可以像下面使用 PyUnicode_Decode() 来构建一个字符串:
    
    PyObject *obj = PyUnicode_Decode(s, len, "encoding", "errors");
    
    /* Examples /*
    obj = PyUnicode_Decode(s, len, "latin-1", "strict");
    obj = PyUnicode_Decode(s, len, "ascii", "ignore");
    如果你恰好有一个用 wchar_t *, len 对表示的宽字符串, 有几种选择性。首先你可以使用 Py_BuildValue() :
    
    wchar_t *w;    /* Wide character string */
    int len;       /* Length */
    
    PyObject *obj = Py_BuildValue("u#", w, len);
    另外,你还可以使用 PyUnicode_FromWideChar() :
    
    PyObject *obj = PyUnicode_FromWideChar(w, len);
    对于宽字符串,并没有对字符数据进行解析——它被假定是原始Unicode编码指针,可以被直接转换成Python。
    
    2020-04-17 18:15:52
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载