Get the App
SLTechnology News&Howtos  ›  Development  › 

How to convert C language string to Python language string

Shulou Source: shulou.com Published: 2022-06-01 21:58:37 09月28日 Update

In this article, Xiaobian introduces in detail "how to convert C language strings into Python language strings". The content is detailed, the steps are clear, and the details are handled properly. I hope this article "how to convert C language strings into Python language strings" can help you solve your doubts.

problem

How to convert a string in C to a Python byte or a string object?

Solution

The C string is represented by a pair of char * and int, and you need to decide whether the string is represented by a raw byte string or a Unicode string. Byte objects can be built using Py_BuildValue () as follows:

Char * s; / * Pointer to C string data * / int len; / * Length of data * / / * Make a bytes object * / PyObject * obj = Py_BuildValue ("y #", s, len)

If you want to create a Unicode string and you know that s points to UTF-8-encoded data, you can use the following ways:

PyObject * obj = Py_BuildValue ("s #", s, len)

If s uses other encodings, you can use PyUnicode_Decode () to build a string like this:

PyObject * obj = PyUnicode_Decode (s, len, "encoding", "errors"); / * Examples / * obj = PyUnicode_Decode (s, len, "latin-1", "strict"); obj = PyUnicode_Decode (s, len, "ascii", "ignore")

If you happen to have a wide string represented by wchar_t * len pairs, there are several options. First you can use Py_BuildValue ():

Wchar_t * w; / * Wide character string * / int len; / * Length * / PyObject * obj = Py_BuildValue ("u #", w, len)

Alternatively, you can use PyUnicode_FromWideChar ():

PyObject * obj = PyUnicode_FromWideChar (w, len)

For wide strings, there is no parsing of character data-- it is assumed to be a raw Unicode-encoded pointer that can be converted directly to Python.

After reading this, the article "how to convert C language strings into Python language strings" has been introduced. If you want to master the knowledge of this article, you still need to practice and use it before you can understand it. If you want to know more about related articles, welcome to follow the industry information channel.

Tags: Characters strings languages bytes articles codes originals contents objects data methods appropriateness ideas pointers new knowledge schemes more steps knowledge Apple Docker Huawei Linux macOS MariaDB Microsoft MySQL NVidia OPPO Reno NVidia Linux Xiaomi Redmi vpn