将 LongBuffer/IntBuffer/ShortBuffer 转换为 ByteBuffer
我知道一种将字节/短/整数/长数组转换为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();
我得到原始字节数组。但是我想使用像ShortBuffer.asByteBuffer()这样的方法,而不是手动循环来做到这一点。[1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]
我发现了2001年向Sun提出的请求,但他们不接受;-((