int与byte数据之间的转换

  在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     }

 

posted @ 2018-04-17 16:50  疯狂奔跑,华丽跌倒  阅读(25033)  评论(0编辑  收藏  举报