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);
}
网上找到这个方法,但也不是很明白他的意思。
希望能解析下。
大端则相反先存高端再存低端 存至数组为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;
}