przekonwertować LongBuffer / IntBuffer / ShortBuffer do ByteBuffer

Znam szybki sposób na przekształcenie tablicy bajtów / krótkich / int / długich w ByteBuffer, a następnie uzyskanie tablicy bajtów. Na przykład, aby przekonwertować tablicę bajtów na krótką tablicę, mogę to zrobić:

byte[] bArray = { 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 };

ByteBuffer bb = ByteBuffer.wrap(byteArray);
ShortBuffer sb = bb.asShortBuffer();
short[] shortArray = new short[byteArray.length / 2];
sb.get(shortArray);

tworzy krótką tablicę w następujący sposób:[256, 0, 0, 0, 256, 0, 0, 0].

Jak mogę wykonać operację odwrotną za pomocąjava.nio klasy?

Teraz to robię:

shortArray[] = {256, 0, 0, 0, 256, 0, 0, 0};
ByteBuffer bb = ByteBuffer.allocate(shortArray.length * 2);
for (short s : shortArray) {
    bb.putShort(s);
}
return bb.array();

I otrzymuję oryginał[1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0] tablica bajtów. Ale chcę użyć metody takiej jak ShortBuffer.asByteBuffer (), a nie ręcznej pętli, aby to zrobić.

Znalazłemprośba do Sun z 2001 roku, ale nie przyjęli tego; - ((

questionAnswers(3)

yourAnswerToTheQuestion