Обратите внимание, что bb.array () не учитывает позицию байтовых буферов и может быть еще хуже, если байтбуфер, с которым вы работаете, является частью какого-то другого буфера.
* 1003 Т.е. *
byte[] test = "Hello World".getBytes("Latin1");
ByteBuffer b1 = ByteBuffer.wrap(test);
byte[] hello = new byte[6];
b1.get(hello); // "Hello "
ByteBuffer b2 = b1.slice(); // position = 0, string = "World"
byte[] tooLong = b2.array(); // Will NOT be "World", but will be "Hello World".
byte[] world = new byte[5];
b2.get(world); // world = "World"
Что не может быть тем, что вы намереваетесь сделать.
Если вы действительно не хотите копировать байтовый массив, обходной путь может заключаться в использовании arrayOffset () + оставшейся () байтового буфера, но это работает, только если приложение поддерживает индекс + длину байта -буферы это нужно.