bytes为简短的方法不起作用

时间:2013-07-12 15:48:46

标签: java android

我需要将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;
}         

2 个答案:

答案 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;
}