nt和byte数组之间的转换

本文介绍如何在Java中实现int值与4字节byte数组之间的相互转换,包括具体的代码实现方法。

有时候和C的程序通信的时候,我们在封装协议时,可能需要将Java里的int值,转换成byte[]后用socket发送。所以我们需要将32位的int值放到4字节的byte[]里。

Java代码  收藏代码
  1. /** 
  2.  * int值转成4字节的byte数组 
  3.  * @param num 
  4.  * @return 
  5.  */  
  6. public static byte[] int2byteArray(int num) {  
  7.     byte[] result = new byte[4];  
  8.     result[0] = (byte)(num >>> 24);//取最高8位放到0下标  
  9.     result[1] = (byte)(num >>> 16);//取次高8为放到1下标  
  10.     result[2] = (byte)(num >>> 8); //取次低8位放到2下标   
  11.     result[3] = (byte)(num );      //取最低8位放到3下标  
  12.     return result;  
  13. }  

 反过来,将4字节的byte[]转成int值:

Java代码  收藏代码
  1. /** 
  2.  * 将4字节的byte数组转成int值 
  3.  * @param b 
  4.  * @return 
  5.  */  
  6. public static int byteArray2int(byte[] b){  
  7.     byte[] a = new byte[4];  
  8.     int i = a.length - 1,j = b.length - 1;  
  9.     for (; i >= 0 ; i--,j--) {//从b的尾部(即int值的低位)开始copy数据  
  10.         if(j >= 0)  
  11.             a[i] = b[j];  
  12.         else  
  13.             a[i] = 0;//如果b.length不足4,则将高位补0  
  14.     }  
  15.     int v0 = (a[0] & 0xff) << 24;//&0xff将byte值无差异转成int,避免Java自动类型提升后,会保留高位的符号位  
  16.     int v1 = (a[1] & 0xff) << 16;  
  17.     int v2 = (a[2] & 0xff) << 8;  
  18.     int v3 = (a[3] & 0xff) ;  
  19.     return v0 + v1 + v2 + v3;  
  20. }  
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值