我用ByteArray來創建一個新的字符串,但結果出乎意料地發生。這裏是我的代碼ByteBuffer.wrap出乎意料地
void foo(byte[] data, ...)
{
ByteBuffer byteBuf = ByteBuffer.wrap(data, 0, 15);
String msg = new String(byteBuf.array());
Log.i("FOO", String.format("ByteArraySize=%d\t\tMsgLen=%d,%d", data.length, byteBuf.array().length, msg.length()));
}
字節數組的長度是518400.但是,日誌信息顯示:
ByteArraySize = 518400 MsgLen = 518400,518400
而不是
ByteArraySize = 518400 MsgLen = 15,15
Wh在錯誤?
能不能請解釋什麼是包裝功能的使用情況下調用偏移量和長度參數,因爲新的緩衝區由實際支持相同的字節數組? –
如果我想按字節,短褲,整數等('getInt()','putInt(int)'和其他)的順序訪問字節數組,我使用ByteBuffer。如果我只想訪問字節數組的一部分,那麼'ByteBuffer.wrap(byte [],int offset,int length)'是'ByteBuffer.wrap(byte [])'的一個很好的變體。 –