将ip转为整数以及整数转为ip的java实现

一个ip地址用字符串保存,长度为(7-15)也就是(14-30bytes),而用int保存只需要4bytes,所以下面的代码:

	/**
	 * ip字符串转整数
	 * ip是.分割的整数字符串,按照r进制转十进制的规律,按权相加求和,这里的权是256.
	 * @param ip
	 * @return
	 */
		public int ip2Int(String ip){
		if(null == ip || "".equals(ip.trim()) || !checkIP(ip)) return 0;
		String[] ipStrs = ip.split("\\.");//分割ip
		int result = 0;
		for(int i = 0;i < 4;i ++){
			Integer ipSubInteger = Integer.parseInt(ipStrs[i]);
			if(ipSubInteger > 255) {//正则验证不能为负数
				result = 0;
				break;
			}
			result += (ipSubInteger << (24 - i * 8));
		}
		return result;
	}
	
	/*正则验证ip*/
	private boolean checkIP(String ip){
		return ip.matches("\\d{1,3}(\\.\\d{1,3}){3}");
	}
	
	/**
	 * 整数转ip
	 * @param ip
	 * @return
	 */
	public String int2Ip(int ip){
		StringBuilder builder = new StringBuilder(String.valueOf(ip >>> 24));
		builder.append(".");
		builder.append(String.valueOf((ip & 0X00FFFFFF) >>> 16));
		builder.append(".");
		builder.append(String.valueOf((ip & 0X0000FFFF) >>> 8));
		builder.append(".");
		builder.append(String.valueOf(ip & 0X000000FF));
		return builder.toString();
	}

 

转载于:https://my.oschina.net/liuchangng/blog/701241

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值