我試圖將一個字節數組轉換爲String
並使用PrintWriter
將它寫入文件(僅用mc檢查它的值,我需要String中的內容) 我的問題總結了:將字節數組轉換爲字符串
//-77 is "equivalent" to 179 or 0xb3 (i also tried those using ByteArrayOutputStream, where these are valid values)
byte[] b = new byte[]{0,0,1,-77};
//I save the String to a txt, so i can check its value with midnight commander
try( PrintWriter out = new PrintWriter("~/Desktop/output.txt")){
out.println(new String(b));
}
此output.txt的內容與MC十六進制: 00 00 01 EF | BF BD 0A
儘管它應該是:00 00 01 B3
這是什麼原因造成的?我想這是編碼,但我不知道應該使用什麼類型的編碼(我嘗試了一些Cp ###類型,但目前爲止它們都不起作用)。
UPDATE:
轉換成字符串像這樣將導致每個負字節:EF BF BD
因此,只有當無符號字節值作品小於128 所以,問題是我如何能代表在字符串中大於127的字節就像我用0-127字節做的那樣?
您應該對字節進行編碼,而不是像試圖將它們當作字符串一樣使用它們。當字節數組是字符串的有效編碼時,應該只使用'new String(byte [])'。 – RealSkeptic
HTTP可以處理字節。 –
也許你的字節數組是有符號的。嘗試使用unisgned byte []。 – Pickle