一、Int2Byte

byte[] bytes = new byte[4];
for (int i = 0; i < 4; i++) {
    bytes[i] = (byte)(integer >>> (i * 8));
}

二、 Byte2Int

int i= (rno[0]<<24)&0xff000000|
       (rno[1]<<16)&0x00ff0000|
       (rno[2]<< 8)&0x0000ff00|
       (rno[3]<< 0)&0x000000ff;

int x = ((b[0] & 0xFF) << 24) | ((b[1] & 0xFF) << 16) |
        ((b[2] & 0xFF) <<  8) | ((b[3] & 0xFF) <<  0);

因为在Java里是有符号扩展, 并且byte(如b[0])在取出来后已经被转换成了int, 所以需要0xFF来转换一下。 看到有说法说是为了转换成无符号数,如一个byte为fe, 则实际表现为 ff ff ff fe, 而0xff则为00 00 00 ff, 因此即去掉了前面无用的部分。

posted on 2018-12-22 16:09  浮舟z  阅读(10892)  评论(0编辑  收藏  举报