1. 程式人生 > >【資料處理】關於string與byte轉換之間 資料丟失的問題

【資料處理】關於string與byte轉換之間 資料丟失的問題

最近在專案中遇到一個問題:

        程式中用到了MD5加密和IDEA加密,通過這些演算法得出的結果均是位元組碼,但是我程式中使用一個通訊介面,其接受的引數型別為String。所以在傳送時,需要轉換為String。
        對於java來說,byte只能表示有符號的資料即範圍為-128~127,所以對於編碼後,如果原本位元組流中的資訊有大於127的話,將其轉換成String型別,傳送的時候再轉換為byte[]時,會出現與原始位元組碼不一致的現象。
        因為在java中如果找不到合適的字元的話,預設會用'?'代替,如對於0xC9,很顯然無法表示成字元,所以在進行byte[]->String->byte[]的時候,就會變成0x3F('?')。


此時可以通過字元編碼的方式來解決:在進行byte[]->String的轉換時,利用"new String(byteArray, "ISO-8859-1");"得到String。在進行String->byte[]的時候,再通過pkt.getBytes("ISO-8859-1")得到原始byte[],這樣資料就不會出現錯誤。

對字元編碼沒有研究過,細節不是很清楚,此乃從網上搜集的解決方法,在此記錄,以方便以後翻查。