konvertieren LongBuffer/IntBuffer/ShortBuffer zu ByteBuffer

Ich kenne einen schnellen Weg, um konvertieren von byte/short/int/long array zu ByteBuffer, und erhalten dann ein byte-array. Beispielsweise konvertiert ein byte-array zu kurze Arrays, die ich tun kann:

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);

erzeugt einen kurzen array wie dieses: [256, 0, 0, 0, 256, 0, 0, 0].

Wie kann ich die inverse operation mit java.nio Klassen?

Jetzt bin ich dabei dies:

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();

Und ich erhalten die original [1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0] byte-array. Aber ich will eine Methode wie ShortBuffer.asByteBuffer(), keine manuelle Schleife, um es zu tun.

Habe ich eine gefunden Anfrage an Sun 2001aber Sie wollten es nicht annehmen ;-((

InformationsquelleAutor der Frage logoff | 2012-07-26

Schreibe einen Kommentar