經常使用的位運算: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]);
    }
}
相關文章
相關標籤/搜索