java中int與byte相互轉換


1:int和byte的關系

  在java中,int整形變量是32位的,而byte是8位的,他們之間的轉換有一定的策略和講究。

1.1:int 到byte

首先我們實現int和byte之間的轉換,思路如下:

  1. 創建一個byte數組,長度為4。byte[0]是最高位,byte[1]是次高位,byte[2]是次次高位,byte[3]是最低位,
  2. 在將int數據右移24位,然后與0xFF相與即可得到byte[0]。
  3. 在將int數據右移16位,然后與0xFF相與即可得到byte[1]。
  4. 在將int數據右移8位,然后與0xFF相與即可得到byte[2]。
  5. 在將int數據右移0位,然后與0xFF相與即可得到byte[3]。
  6. 輸出byte[]數組即可。

1.2:byte 到int

首先我們實現byte和int之間的轉換,思路如下:

  1. 輸入一個byte數組,長度為4。byte[0]是最高位,byte[1]是次高位,byte[2]是次次高位,byte[3]是最低位,
  2. 創建一個int型變量sum,作為byte到int的結果。
  3. 用一個for(int i=0;i<4;i++)的循環。每次將(3-i)*8的值,作為該byte的權重。
  4. sum = sum + byte[i]<<(3-i)*8。重復3-4即可。
  5. return sum即可。

2:代碼實現

  /**
     * int到byte[] 由高位到低位
     * @param i 需要轉換為byte數組的整行值。
     * @return byte數組
     */
    public static byte[] intToByteArray(int i) {
        byte[] result = new byte[4];
        result[0] = (byte)((i >> 24) & 0xFF);
        result[1] = (byte)((i >> 16) & 0xFF);
        result[2] = (byte)((i >> 8) & 0xFF);
        result[3] = (byte)(i & 0xFF);
        return result;
    }

    /**
     * byte[]轉int
     * @param bytes 需要轉換成int的數組
     * @return int值
     */
    public static int byteArrayToInt(byte[] bytes) {
        int value=0;
        for(int i = 0; i < 4; i++) {
            int shift= (3-i) * 8;
            value +=(bytes[i] & 0xFF) << shift;
        }
        return value;
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM