【发布时间】:2013-08-21 20:56:35
【问题描述】:
我正在尝试对字节数组进行切片以修剪数组的第一部分。我正在使用 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 哈希的函数。我想要的是对整个缓冲区进行切片,只传递没有预期哈希的数据。
【问题讨论】:
-
如果你没有编写散列函数,如果你想避免复制,一旦你把所有东西都放在一个
byte[]中,你就会有点卡住了。为什么不将网络中的哈希值读入一个数组,然后将数据读入另一个?
标签: java