数字IP的作用以及转换
1、什么是数字地址?与IP地址有什么区别?简单的说,数字地址就是IP地址的另一种表现形式。都可以被浏览器、ping命令识别还原和访问。
区别:IP地址用“点分十进制”表示,用“.”分成4部分;数字地址是一串用“十进制”表示的数字。
比如:百度的IP地址“119.75.218.77”转换成数字地址就是“2001459789”。在浏览器中输入2001459789就可以访问百度网站,彰显个性!
主要用于快速查询该IP地址或IP段属于哪个城市,从而进行流量统计、根据来访IP显示天气预报、根据IP显示不同的页面等。将IP地址或IP段转换成数字保存在数据库中,可以提高检索速度。要知道,在数据库中数字类型的要比文本类型的检索速度快得多,从而提高网站性能。
现在很多服务器都有IP白名单限制,只有对应的IP地址才能访问对应的服务器,提高安全性。那么就需要区分不同的IP地址段,给出的是192.168.1.1-192.168.255.255.
这种字符串的IP比较起来会很麻烦,最简单的方式就是转为数字类型的直接比较大小,提高效率。
3、数字IP的转换
public class IPToNumber {
public static void main(String[] args){
String ip1 = "192.168.1.100";
long ip = ipToLong(ip1);
System.out.println("ip= " + ip);
String IP = longToIP(ip);
System.out.println("IP= " + IP);
}
public static long ipToLong(String iP){
String[] ipArr = iP.split("\\.");
long result = 0;
for(int i = 0; i < ipArr.length; i ++){
int power = ipArr.length - 1 - i;
int ip = Integer.parseInt(ipArr[i]);
result += ip * Math.pow(256, power);
}
return result;
}
public static String longToIP(long ip){
String[] ipArr = new String[4];
String result = "";
for(int i = 0; i < ipArr.length; i ++){
ipArr[i] = ip % 256 + "";
ip = ip / 256;
if(i == 0){
result = ipArr[i];
}else{
result = ipArr[i] + "." + result;
}
}
return result;
}
}
输出结果为ip= 3232235876