你好,我有一个数据库来选择IP位置from>
这个脚本是用php编写的,我正在把它转换成java,但我不知道java中的ip2long('127.0.0.1' ));是什么意思。
发布于 2012-05-29 22:06:48
基本上,这会将点分隔的IP地址字符串转换为长字符串。
public static Long Dot2LongIP(String dottedIP) {
String[] addrArray = dottedIP.split("\\.");
long num = 0;
for (int i=0;i<addrArray.length;i++) {
int power = 3-i;
num += ((Integer.parseInt(addrArray[i]) % 256) * Math.pow(256,power));
}
return num;
}发布于 2020-04-08 22:12:10
public static Long ipToLong(String stringIp) {
return Arrays.stream(stringIp.split("\\."))
.mapToLong(Long::parseLong)
.reduce(0,
(a, b) -> (a << 8) + b);
}
public static String ipToString(Long longIp){
return ((longIp >> 24) & 0xFF) + "." +
((longIp >> 16) & 0xFF) + "." +
((longIp >> 8) & 0xFF) + "." +
(longIp & 0xFF);
}发布于 2012-05-29 22:10:04
我不认为Java中有一个标准的API可以做到这一点,但是
1/ InetAddress类为您提供了获取字节数组的方法。
2/如果你真的需要一个整数,你可以使用这个片段,可以在http://www.myteneo.net/blog/-/blogs/java-ip-address-to-integer-and-back/上找到
public static String intToIp(int i) {
return ((i >> 24 ) & 0xFF) + "." +
((i >> 16 ) & 0xFF) + "." +
((i >> 8 ) & 0xFF) + "." +
( i & 0xFF);
}
public static Long ipToInt(String addr) {
String[] addrArray = addr.split("\\.");
long num = 0;
for (int i=0;i<addrArray.length;i++) {
int power = 3-i;
num += ((Integer.parseInt(addrArray[i])%256 * Math.pow(256,power)));
}
return num;
}https://stackoverflow.com/questions/10800693
复制相似问题