Java - IP地址转为10进制数
以192.168.1.2为例,把它转为10进制数的公式是:
192 * 256^3 + 168 * 256^2 +1 * 256 + 2 * 1 = 3232235778
相当于将IP地址看成256进制的数。
由于乘法计算不如位运算快,因此对这个方法做如下改进:
a = 192 << 24
b = 168 << 16
c = 1 << 8
d = 2 << 0
最后计算 a | b | c | d的值,结果也是3232235778
java代码如下:
/**
* description:ip to decimal num
* @author lijialin
* @since 2017/08/28
*/
public class Main {
public static long ipToLong(String ip) {
String[] arr = ip.split("\\.");
long result = 0;
for (int i = 0; i <= 3; i++) {
long ip = Long.parseLong(arr[i]);
result |= ip << ((3-i) << 3);
}
return result;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
long r = ipToLong("192.168.1.2");
System.out.println(r); // 3232235778
}
}
参考自:http://www.mkyong.com/java/java-convert-ip-address-to-decimal-number/