C語言字串轉換為Python字串的方法

2022-09-28 01:48:12 字數 1350 閱讀 6773

問題

怎樣將c中的字串轉換為python位元組或乙個字串物件?

解決方案

c字串使用一對char *和int來表示, 你需要決定字串到底是用乙個原始位元組字串還是乙個unicode字串來表示。 位元組物件可以像下面這樣使用py_buildvaluowjvwfe()來構建:

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);

另外,你還可以使用pyunicowjvwf程式設計客棧ode_fromwidechar():

pyobject *obj = pyunicode_fromwidechar(w, len);

對於寬字串,並沒有對字元資料進行解析——它被假定是原始unicode編碼指標,可以被直接轉換成python。

討論將c中的字串轉換為python字串遵循和i/o同樣的原則。 也就是說,來自c中的資料必須根據一些解碼器被顯式的解碼為乙個字串。 通常編碼格式包括ascii、latin-1和utf-8. 如果你並不確定編碼方式或者資料是二進位制的,你最好將字串編碼成位元組。 當構造乙個物件的時候,python通常會複製你提供的字串資料。 如果有必要的話,你需要在後www.cppcns.com面去釋放c字串。 同時,為了讓程式更加健壯,你應該同時使用乙個指標和乙個大小值, 而不是依賴null結尾資料來建立字串。

C語言 將字元陣列轉換為字串

一般來說,函式返回的型別不能是乙個位址,所以說,如果你返回乙個位址,編譯器會給你警告,但是仍然會正確執行。但是如果你返回的是乙個unsiged char型別的陣列位址,那麼就有可能出現亂碼。如何解決返回unsigned char型別的陣列位址亂碼呢,經過嘗試找到乙個好方法,就是把這個陣列轉換為字串,...

C語言把整數轉換為字串

各位可能在網上看到用以下函式可以將整數轉換為字串 itoa 將整型值轉換為字串 ultoa 將無符號長整型值轉換為字串 請注意,上述函式與ansi標準是不相容的,很多編譯器根本不提供這幾個函式,本文就不介紹了,沒什麼意義。將整數轉換為字串而且能與ansi標準相容的方法是使用sprintf 和snpr...

C語言把整數轉換為字串

各位可能在網上看到用以下函式可以將整數轉換為字串 itoa 將整型值轉換為字串 ultoa 將無符號長整型值轉換為字串 請注意,上述函式與ansi標準是不相容的,很多編譯器根本不提供這幾個函式,本文就不介紹了,沒什麼意義。將整數轉換為字串而且能與ansi標準相容的方法是使用sprintf 和snpr...