c++中byte數組與字符串的轉化


我們不討論與字符集有關的內容,只討論在字節流傳遞過程中的問題。

我們在做一系統操作時會需要使用到數據流,比如接收網絡數據,文件數據,圖片數據,原始數據大多是以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();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM