byte/short/int/long 配列を ByteBuffer に変換し、バイト配列を取得する簡単な方法を知っています。たとえば、バイト配列を短い配列に変換するには、次のようにします。
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);
次のような短い配列を生成します[256, 0, 0, 0, 256, 0, 0, 0]
。
java.nioクラスを使用して逆操作を行うにはどうすればよいですか?
今私はこれをやっています:
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();
そして、元の[1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]
バイト配列を取得します。しかし、手動ループではなく、ShortBuffer.asByteBuffer() のようなメソッドを使用したいと考えています。
2001年のSunへのリクエストを見つけましたが、彼らはそれを受け入れませんでした;-((