我正在尝试对字节数组进行切片以修剪数组的第一部分。我正在使用 ByteBuffer,但它的行为不像我预期的那样。
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 哈希的函数。我想要的是切片整个缓冲区以仅传递没有预期哈希的数据。