我需要将bytes数组转换为short数组。我不知道为什么它不起作用!这是我的代码:
private short[] byte2short(byte[] buffer) {
int byteArrsize = buffer.length;
short[] shorts = new short [ byteArrsize/2];
for (int i = 0; i < byteArrsize; i++) {
short MSB = (short) buffer[2*i+1];
short LSB = (short) buffer[2*i];
shorts[i] = (short) (MSB << 8 | (255 & LSB));
}
return shorts;
}
答案 0 :(得分:1)
您是否考虑过使用Java内置的库?
private short[] byte2short(byte[] buffer) {
ByteBuffer bytes = ByteBuffer.wrap(buffer);
ShortBuffer shorts = bytes.asShortBuffer();
return shorts.array();
}
asShortBuffer()
上的数组方法可能无法按计划运行。但手动转储它们是微不足道的:
private short[] byte2short(byte[] src) {
short[] dest = new short[src.length / 2];
ByteBuffer.wrap(src).asShortBuffer().get(dest);
return dest;
}
答案 1 :(得分:0)
你可以试试这个(来自https://groups.google.com/forum/#!topic/android-developers/HAI2OQW9arA):
private short[] byte2short(byte[] byteD)
{
int byteArrsize = byteD.length / 2;
short[] shorts = new short[byteArrsize];
for (int i = 0; i < byteArrsize; i++) {
shorts[i] = (short) (byteD[i * 2] + (byteD[(i * 2) + 1] << 8));
}
return shorts;
}