IPv4字符串和整数相互转换

在进行IP比较、查询的时候使用IP字符串比较相当麻烦,这个时候可以考虑将IP字符串转化为整数。

在运算完成之后,有需要将 整数转化为IPv4字符串以方便显示。

备忘如下:

public class IPTransfer {

	private final long PART1 = 0xff000000;
	private final long PART2 = 0xff0000;
	private final long PART3 = 0xff00;
	private final long PART4 = 0xff;

	/** 将IP地址长整型数值转化为IPv4字符串 */
	public String ip2Str(long ip) {
		String ipStr = String.valueOf((ip & PART1) >> 24);
		ipStr += "." + ((ip & PART2) >> 16);
		ipStr += "." + ((ip & PART3) >> 8);
		ipStr += "." + (ip & PART4);
		return ipStr;
	}

	/** 将IPv4字符串转化为对应的长整型整数 */
	public long ip2Long(String ip) {
		String[] p4 = ip.split("\\.");
		long ipInt = 0;
		long part = Long.valueOf(p4[0]);
		ipInt = ipInt | (part << 24);
		part = Long.valueOf(p4[1]);
		ipInt = ipInt | (part << 16);
		part = Long.valueOf(p4[2]);
		ipInt = ipInt | (part << 8);
		part = Long.valueOf(p4[3]);
		ipInt = ipInt | (part);
		return ipInt;
	}
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java中,将IPv4地址转换整数可以使用以下方法: 1. 将IPv4地址字符串按照 '.' 进行分割,得到四个数字部分。例如,对于ip地址 "192.168.0.1",将其分割为 "192", "168", "0", "1"。 2. 将每个数字部分转换整数。 3. 将每个整数部分按照占用8位的二进制数进行计算,并将其相加。也就是,将 "192" 转换为二进制的 "11000000",将 "168" 转换为二进制的 "10101000",将 "0" 转换为二进制的 "00000000",将 "1" 转换为二进制的 "00000001"。 4. 将这些二进制数按照从高位到低位的顺序相加,并将结果转换整数。对于 "11000000" + "10101000" + "00000000" + "00000001" 的结果来说,转换整数为 3232235521。 下面是一个示例代码: ```java public class IPv4Converter { public static void main(String[] args) { String ipAddress = "192.168.0.1"; int ipNumber = convertIPv4ToNumber(ipAddress); System.out.println("IP地址 " + ipAddress + " 转换整数为 " + ipNumber); } public static int convertIPv4ToNumber(String ipAddress) { String[] ipParts = ipAddress.split("\\."); int ipNumber = 0; for (int i = 0; i < 4; i++) { ipNumber = ipNumber << 8; ipNumber += Integer.parseInt(ipParts[i]); } return ipNumber; } } ``` 以上代码中的 `convertIPv4ToNumber` 方法接受一个IPv4地址字符串作为参数,并返回对应的整数表示。在 `main` 方法中,我们将IPv4地址 "192.168.0.1" 转换整数,并将结果打印出来。输出的结果为 "IP地址 192.168.0.1 转换整数为 3232235521"。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值