在OutputStream中寫入一個int類型,會截取其低8位,丟棄其高24位,因此,需要將基本類型先轉換為字節流。
將int數字轉換為字節流
1 /** 2 * int轉byte[] 3 * 該方法將一個int類型的數據轉換為byte[]形式,因為int為32bit,而byte為8bit所以在進行類型轉換時,知會獲取低8位, 4 * 丟棄高24位。通過位移的方式,將32bit的數據轉換成4個8bit的數據。注意 &0xff,在這當中,&0xff簡單理解為一把剪刀, 5 * 將想要獲取的8位數據截取出來。 6 * @param i 一個int數字 7 * @return byte[] 8 */ 9 public static byte[] int2ByteArray(int i){ 10 byte[] result=new byte[4]; 11 result[0]=(byte)((i >> 24)& 0xFF); 12 result[1]=(byte)((i >> 16)& 0xFF); 13 result[2]=(byte)((i >> 8)& 0xFF); 14 result[3]=(byte)(i & 0xFF); 15 return result; 16 } 17 /** 18 * byte[]轉int 19 * 利用int2ByteArray方法,將一個int轉為byte[],但在解析時,需要將數據還原。同樣使用移位的方式,將適當的位數進行還原, 20 * 0xFF為16進制的數據,所以在其后每加上一位,就相當於二進制加上4位。同時,使用|=號拼接數據,將其還原成最終的int數據 21 * @param bytes byte類型數組 22 * @return int數字 23 */ 24 public static int bytes2Int(byte[] bytes){ 25 int num=bytes[3] & 0xFF; 26 num |=((bytes[2] <<8)& 0xFF00); 27 num |=((bytes[1] <<16)& 0xFF0000); 28 num |=((bytes[0] <<24)& 0xFF0000); 29 return num; 30 }