我有一些從char數組轉換爲字節數組的代碼(不需要創建任何中間字符串,這是一個要求),我最終得到了一些最後的額外字節。下面是一些測試代碼,說明了這個問題:Java - 將char數組轉換爲字節數組 - 長度不匹配
String s = "TomJSawyer";
System.out.println("Original String length = " + s.length());
char[] caOrig = s.toCharArray();
System.out.println("Original Char Array Length = " + caOrig.length);
byte[] ba1 = Charset.forName("UTF-8").encode(CharBuffer.wrap(caOrig)).array();
System.out.println("byte array converted from char array length = " + ba1.length);
byte[] ba2 = s.toString().getBytes("UTF-8");
System.out.println("byte array converted from String length = " + ba2.length);
,這裏是上Winodows jdk160_24運行的輸出。
Original String length = 10
Original Char Array Length = 10
byte array converted from char array length = 11
byte array converted from String length = 10
使用字符集從char數組轉換而來的額外字節是零值。隨着輸入字符串變長,附加到字節數組末尾的零字節數量增加。我期望這與編碼有關,但它似乎是我指定UTF-8這兩個地方,所以我不知道這是爲什麼。
如果任何人都可以向我解釋發生了什麼事情或以其他方式指向正確的方向,我會非常感激。提前致謝。
StringBuffer sb =「TomJSawyer」; – MoMan
謝謝你的想法。不幸的是,String.valueOf()創建了一箇中間字符串,這正是我試圖避免的。 – user2801442