IP表示为整数

int[] ip = {192, 168, 1, 100};

/* // 测试代码
System.out.println(Integer.toBinaryString(ip[0]));
System.out.println(Integer.toBinaryString(ip[1]));
System.out.println(Integer.toBinaryString(ip[2]));
System.out.println(Integer.toBinaryString(ip[3]));

System.out.println(" & 0xff: ");	// 不够八位的补齐八位
System.out.println(Integer.toBinaryString(ip[0] & 0xff));
System.out.println(Integer.toBinaryString(ip[1] & 0xff));
System.out.println(Integer.toBinaryString(ip[2] & 0xff));
System.out.println(Integer.toBinaryString(ip[3] & 0xff));

System.out.println("bit compute:");	// 不同部分位移8的倍数
System.out.println(Integer.toBinaryString((ip[0] & 0xff) << 24 ));
System.out.println(Integer.toBinaryString((ip[1] & 0xff) << 16 ));
System.out.println(Integer.toBinaryString((ip[2] & 0xff) << 8 ));
System.out.println(Integer.toBinaryString((ip[3] & 0xff) << 0 ));
*/

// 通过位或操作把位移之后的数加起来,得到的结果就是能够表示ip的整数
int v = ((ip[0] & 0xff) << 24 ) | ((ip[1] & 0xff) << 16 ) 
			| ((ip[2] & 0xff) << 8 ) | ((ip[3] & 0xff) << 0 );
System.out.println(Integer.toBinaryString(v));
System.out.println(v);

/* // 测试反向位移操作
System.out.println("reverse ip test ");
System.out.println(Integer.toBinaryString(0xff));
System.out.println(Integer.toBinaryString(v>>24));
System.out.println(Integer.toBinaryString(v>>24 & 0xff));
System.out.println(Integer.toBinaryString(v>>16));
System.out.println(Integer.toBinaryString(v>>16 & 0xff));
System.out.println(Integer.toBinaryString(v>>8));
System.out.println(Integer.toBinaryString(v>>8 & 0xff));
System.out.println(Integer.toBinaryString(v));
System.out.println(Integer.toBinaryString(v & 0xff));
*/

// 整数转化为ip数据
System.out.println("reverse ip: ");
ip[0] = v>>24 & 0xff;
ip[1] = v>>16 & 0xff;
ip[2] = v>>8 & 0xff;
ip[3] = v & 0xff;

for(int i: ip) {
	System.out.print(i+".");
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值