我知道一种将 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 http://docs.oracle.com/javase/7/docs/api/java/nio/package-summary.html课程?
现在我正在这样做:
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的请求 https://bugs.java.com/bugdatabase/view_bug?bug_id=4489356,但他们不接受;-((