什麼是將java.nio.ByteBuffer a
轉換爲(新創建的)CharBuffer b
或char[] b
的最快方法。Fast ByteBuffer to CharBuffer or char []
通過這樣做很重要,即a[i] == b[i]
。這意味着,不是a[i]
和a[i+1]
一起構成價值b[j]
,什麼getChar(i)
會做,但值應該是「傳播」。
byte a[] = { 1,2,3, 125,126,127, -128,-127,-126 } // each a byte (which are signed)
char b[] = { 1,2,3, 125,126,127, 128, 129, 130 } // each a char (which are unsigned)
注意byte:-128
具有相同的(低級8)位作爲char:128
。因此,我認爲「最好」的解釋將如我上面所述,因爲這些位是相同的。
之後,我還需要反之亦然翻譯:最有效的方式來獲得char[]
或java.nio.CharBuffer
回到一個java.nio.ByteBuffer
。
你想用這個字符緩衝區做什麼?如果你輸入一個2字節的字符會發生什麼?翻譯後的字節數組應該如何顯示?根據你的需要,最有效的方法可能是不轉換。 – Ishtar 2011-05-09 12:06:21
換句話說,您正在尋找將ByteBuffer的內容解釋爲使用ISO-8859-1編碼的字符序列? – Anon 2011-05-09 12:34:54
假設是,'char []'緩衝區中沒有大於'0xff'的值來進行反向轉換。任何行爲/崩潰都可以(「未指定」)。 ISO-8859-1?據我所知,有些字節不能被任何代碼頁翻譯(例如'\ 0')?我認爲,如果轉儲8位數據流,許多代碼轉換庫不會很好地處理它。但我不瞭解Java,我會查找它。想象一下,我有圖片/圖像數據。 – towi 2011-05-09 12:49:25