java 中string與bytes的轉換總結


最近在和導航設備的通訊服務,和設備通訊時,需要將字符串以UTF-16編碼傳遞。

那如何將string,轉換為byte[]?其實Java提供了現成的實現:java.lang.string.getbytes();
用法: byte[] b=str.getBytes(charsetName)

string str="南京";
//不設置字節序時候,默認為大端模式
byte[] b=str.getBytes("UTF-16");//結果==0xFE,0xFF,0x53,0x57,0x4E,0xAC

//轉為可見字符后發現多出了2個字節,即粗體的兩個字節,其實這兩個字節不是漢字“南京”所對應的,它是getbyts方法在返回結果前加的
//用來標識輸出byte數組字節序的,FEFF為大端,FFFE為小端 //那如何指定轉換后的字節序呢,其實在編碼后面家BE或LE就可以了
byte[] b1_be=str.getBytes("UTF-16BE");//BE為大端,結果==0x53,0x57,0x4E,0xAC
byte[] b1_le=str.getBytes("UTF-16LE");//LE小端,結果==0x4E,0xAC,0x53,0x57
//上面示例可見,指定字節序后,getbytes方法返回的內容為4個字節,前綴沒有了字節序標識。

做過通訊的人都知道,有編碼就有解碼,那如何將byte數組按照某編碼方式轉換為字符串呢,也就是getbytes的反向操作呢。
我是這樣做的:做過通訊的人都知道,有編碼就有解碼,那如何將byte數組按照某編碼方式轉換為字符串呢,也就是getbytes的反向操作呢。
我是這樣做的:

//給定字節數組后,需要指定字節序
String productNo = new String(b1_be,"UTF-16BE");
System.out.println(productNo);//==南京

 


免責聲明!

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



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