我正在使用以下方法将字节转换为short,

        short shortvalue;
        nTempByteArr[0] = RawDataQueue.poll();
        nTempByteArr[1] = RawDataQueue.poll();
        ShortValue = (short) (((nTempByteArr[1] & 0xff) << 8) | (nTempByteArr[0] & 0xff));


如何将短值转换为完全相同的两个字节nTempByteArr [0]和nTempbyteArr [1]

我试过了:

                   nByteArr[0]     = (byte)((ShortValue & 0xff00) >> 8);
                   nByteArr[1]     = (byte)(ShortValue & 0xff);



                  nByteArr[0]     = (byte)( ShortValue & 0xff);
                  nByteArr[1]     = (byte)((ShortValue & 0xff00) >> 8);


请帮我...!!!!!!!!!!!!!

最佳答案

我们可以使用另一种无移位的方法,通过使用bytesshort转换为java.nio.ByteBuffer而无移位

ByteBuffer bb = ByteBuffer.allocate(2);
bb.order(ByteOrder.LITTLE_ENDIAN);
bb.put(nTempByteArr[1]);
bb.put(nTempByteArr[0]);
short shortVal = bb.getShort(0);


我们可以使用getByteBuffer功能将帮助我们返回bytes

bb.putShort(ShortValue);
nTempByteArr[0] = bb.get(0);
nTempByteArr[1] = bb.get(1);

10-06 12:18