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     }

 

转载于:https://www.cnblogs.com/javaCommunication/p/8867740.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值