1:int和byte的關系
在java中,int整形變量是32位的,而byte是8位的,他們之間的轉換有一定的策略和講究。
1.1:int 到byte
首先我們實現int和byte之間的轉換,思路如下:
- 創建一個byte數組,長度為4。byte[0]是最高位,byte[1]是次高位,byte[2]是次次高位,byte[3]是最低位,
- 在將int數據右移24位,然后與0xFF相與即可得到byte[0]。
- 在將int數據右移16位,然后與0xFF相與即可得到byte[1]。
- 在將int數據右移8位,然后與0xFF相與即可得到byte[2]。
- 在將int數據右移0位,然后與0xFF相與即可得到byte[3]。
- 輸出byte[]數組即可。
1.2:byte 到int
首先我們實現byte和int之間的轉換,思路如下:
- 輸入一個byte數組,長度為4。byte[0]是最高位,byte[1]是次高位,byte[2]是次次高位,byte[3]是最低位,
- 創建一個int型變量sum,作為byte到int的結果。
- 用一個for(int i=0;i<4;i++)的循環。每次將(3-i)*8的值,作為該byte的權重。
- sum = sum + byte[i]<<(3-i)*8。重復3-4即可。
- 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; }