private static byte[] shortToByteArray(short s)
{
byte[] shortBuf = new byte[2];
for(int i = 0;i < 2;i++)
{
int offset = (shortBuf.length - 1 - i) * 8;
shortBuf[i] = (byte) ((s >>> offset) & 0xff);
}
return shortBuf;
}
我上网找了这个转换方法,但不知道这是专为高端法还是低端法,
我看了,觉得是高端法。但我不是很明白循环里面的意思是什么,“>>>”是右移的意思?那“& 0xff”是什么意思呢?同样的,如果把一个二进制低端法的2个字节转换为short,
public static final int byteArrayToShort(byte[] b)
{
return (b[0] << 8) + (b[1] & 0xFF);
}
网上找到这个方法,但也不是很明白他的意思。
希望能解析下。

解决方案 »

  1.   

    小端是低字节在前高字节在后 如short型的 0x1234 先存34 在存12 存至数组为a[0]=0x34 a[1]=0x12
    大端则相反先存高端再存低端 存至数组为a[0]=0x12 a[1]=0x34private static byte[] shortToByteArray(short s);你这函数是转为大端的好像写罗嗦了
    private static byte[] shortToByteArray(short s)
        {
            byte[] shortBuf = new byte[2];
            shortBuf[0] = (byte) ((s >>> 8) & 0xff); //先存高字节
            shortBuf[1] = (byte) (s & 0xff);          //再存低字节
            return shortBuf;
        }
      

  2.   

    ((s >>> 8) & 0xff) 是数值右移8位 把高8位移下来 再& 0xff是只取低8位