我知道一种将 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 提出的请求,但他们没有接受;-((