我試圖切片一個字節數組來修剪數組的第一部分。我使用的是ByteBuffer,但它不像我所期望的那樣。在Java中切片字節數組
byte[] myArray = new byte[10];
ByteBuffer buf = ByteBuffer.wrap(myArray);
buf.position(5);
ByteBuffer slicedBuf = buf.slice();
byte[] newArray = slicedBuf.array();
我期望newArray的大小爲5,只包含我的ByteBuffer的最後部分。而是返回完整的字節數組。我明白這是因爲「後臺緩衝區」一直都是一樣的。
我怎樣才能切片只有數組的所需部分?
編輯:添加上下文
字節從網絡接收。該緩衝形成這樣的:
[ SHA1 hash ] [ data... lots of it ]
我已經有一個函數,它接受一個字節數組作爲參數,並計算SHA1哈希。我想要的是切割完整的緩衝區,只傳遞沒有預期散列的數據。
如果你沒有編寫哈希函數,如果你想避免複製,你有一個'byte []''中的所有東西都會卡住。爲什麼不從網絡中讀取散列成一個數組,並將數據讀入另一個數組? –