Javaでバイト配列をスライスする 質問する

Javaでバイト配列をスライスする 質問する

バイト配列をスライスして配列の最初の部分を削除しようとしています。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 ハッシュを計算する関数はすでにあります。必要なのは、バッファ全体をスライスして、予想されるハッシュのないデータのみを渡すことです。

ベストアンサー1

あなたはArrays.copyOfRange方法。例:

// slice from index 5 to index 9
byte[] slice = Arrays.copyOfRange(myArray, 5, 10);

おすすめ記事