Tôi đang cố gắng cắt một mảng byte để cắt bớt phần đầu tiên của mảng. Tôi đang sử dụng ByteBuffer nhưng nó không hoạt động như tôi mong đợi.Cắt mảng byte trong Java
byte[] myArray = new byte[10];
ByteBuffer buf = ByteBuffer.wrap(myArray);
buf.position(5);
ByteBuffer slicedBuf = buf.slice();
byte[] newArray = slicedBuf.array();
Tôi mong đợi kích thước của newArray là 5, chỉ chứa phần cuối cùng của ByteBuffer của tôi. Thay vào đó, mảng byte đầy đủ được trả về. Tôi hiểu rằng điều này là do "đệm đệm" giống nhau.
Làm cách nào tôi có thể cắt để chỉ có phần mong muốn của mảng?
EDIT: Đã thêm ngữ cảnh
Các byte được nhận từ mạng. Các bộ đệm được hình thành như thế này:
[ SHA1 hash ] [ data... lots of it ]
Tôi đã có một chức năng mà phải mất một mảng byte như một tham số và tính toán băm SHA1. Những gì tôi muốn là để cắt bộ đệm đầy đủ để vượt qua chỉ các dữ liệu mà không có băm dự kiến.
Nếu bạn không viết hàm băm, bạn bị mắc kẹt khi bạn có mọi thứ trong một 'byte []' nếu bạn muốn tránh một bản sao. Tại sao không đọc băm từ mạng vào một mảng và dữ liệu vào một mảng khác? –