我們不討論與字符集有關的內容,只討論在字節流傳遞過程中的問題。
我們在做一系統操作時會需要使用到數據流,比如接收網絡數據,文件數據,圖片數據,原始數據大多是以byte數組的形式提供,與其它語言(c#,java)交互時也是如此。
c++中byte數組是不能傳遞的,byte指針倒是可以傳遞,但我一直拿不到正確的長度(或許只是我沒找對方法)。我在網上也很少能找到string轉byte[]或byte[]轉string的例子,即使有,基本上也不能使用。
最終找到的方法是使用std::string代替byte[]進行接口傳遞,比如方法參數,一個string參數就夠了。但如果傳遞byte指針,則再需要傳遞一個長度參數,太過麻煩。
byte數組轉string:
byte key[16]; key[0] =48 ; key[1] =49 ; key[2] =50 ; key[3] =51 ; key[4] =52 ; key[5] =53 ; key[6] =54 ; key[7] =55 ; key[8] =56 ; key[9] =57 ; key[10] =65 ; key[11] =66 ; key[12] =67 ; key[13] =68 ; key[14] =69 ; key[15] =70 ; char* p = new char[sizeof(key)]; memcpy(p,key,sizeof(key)); p[sizeof(key)] = 0; string str(p);
string 轉 byte指針:
byte* px = (byte*)str.c_str(); int len = str.length();