convertir un LongBuffer / IntBuffer / ShortBuffer a ByteBuffer
Conozco una forma rápida de convertir un byte / short / int / long array a ByteBuffer, y luego obtener un byte array. Por ejemplo, para convertir una matriz de bytes en una matriz corta, puedo hacer:
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);
produce una matriz corta como esta:[256, 0, 0, 0, 256, 0, 0, 0]
.
¿Cómo puedo hacer la operación inversa usandojava.nio clases?
Ahora estoy haciendo esto:
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();
Y obtengo el original.[1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]
matriz de bytes. Pero quiero usar un método como ShortBuffer.asByteBuffer (), no un ciclo manual para hacerlo.
He encontrado unSolicitud a Sol de 2001., pero no lo aceptaron; - ((