バイト配列をスライスして配列の最初の部分を切り詰めようとしています。私はByteBufferを使用していますが、期待通りの動作をしません。Javaでバイト配列をスライス
byte[] myArray = new byte[10];
ByteBuffer buf = ByteBuffer.wrap(myArray);
buf.position(5);
ByteBuffer slicedBuf = buf.slice();
byte[] newArray = slicedBuf.array();
私のByteBufferの最後の部分だけを含むnewArrayのサイズは5と予想されます。代わりに、完全なバイト配列が返されます。私はこれが "バッキングバッファー"がすべて同じものであることを理解しています。
どのようにしてアレイの必要な部分のみをスライスできますか?
EDIT:追加されたコンテキスト
バイトはネットワークから受信されます。私はすでに、パラメータとしてバイト配列を受け取り、SHA1ハッシュを計算する機能を持っている
[ SHA1 hash ] [ data... lots of it ]
:バッファがこのように形成されています。私が望むのは、予想されるハッシュなしでデータだけを渡すためにフルバッファをスライスすることです。
ハッシュ関数を書いていないのであれば、コピーを避けたい場合には、一度 'byte []'の中にすべてが入っていれば固まってしまいます。ネットワークからハッシュを1つの配列に、データを別の配列に読み込むのはなぜですか? –