经常使用的位运算:int与byte[]互相转换

1数组

// 要求: 把整数转换成字节数组: byte[0]为存储数据低位, byte[3]存储数据高位 
public class _02_位运算 {

    public boolean isBigEndian() { //判断是大端仍是小端
        return ByteOrder.nativeOrder() == ByteOrder.BIG_ENDIAN;
    }

    public byte[] unpackBigEndian(int x) { //高位在前,低位在后。
        return new byte[]{
                (byte) (x >>> 24),// 强制类型转换, 老是转换低字节部分,操做系统已经屏蔽了内存地址
                (byte) (x >>> 16),// 把内存地址看作是从右至左,依次增大;符号方向同移动方向就一致了
                (byte) (x >>> 8),
                (byte) (x >>> 0)
        };
    }

    public byte[] unpackInt(int x) {//低位在前,高位在后
        return new byte[]{
                (byte) (x >>> 0),
                (byte) (x >>> 8),
                (byte) (x >>> 16),
                (byte) (x >>> 24)
        };
    }

    public static void main(String[] args) {
        System.out.println(new _02_位运算().isBigEndian());
        byte[] bytes = new _02_位运算().unpackInt(1000);
        System.out.println(bytes[0]);
        System.out.println(bytes[1]);
    }
}
相关文章
相关标签/搜索