在进行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;
}
}