試圖字節轉換爲字符串在Java中,當我有一個問題,有這樣的代碼:在Java中將字節轉換爲字符串時發生了什麼?
byte[] bytes = {1, 2, -3};
byte[] transferred = new String(bytes, Charsets.UTF_8).getBytes(Charsets.UTF_8);
和原始字節不一樣的傳輸的字節,分別
[1, 2, -3]
[1, 2, -17, -65, -67]
我曾經認爲這是由於UTF-8字符集映射爲負「-3」。所以我把它改成「-32」。但傳輸的陣列保持不變!
[1, 2, -32]
[1, 2, -17, -65, -67]
所以我強烈地想知道我什麼時候叫新的字符串(字節):)
你從哪裏拿出1,2,-3?那甚至是有效的UTF-8? – Necreaux
請記住,您正在查看根據Java對所有內容進行簽名的字節的數字表示形式。打印爲-3的值實際上是8位值0xFD或0b11111101。 –
由於字節0xFD對應於阿拉伯語表示形式代碼點的第一個字節,因此它可能會將其中一個擴展爲正確的UTF-8序列。大多數阿拉伯語演示文稿表單都以UTF-8格式解析爲3個字節。 –