問題
怎樣將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...