java ip地址转换为长整型;
public class Util {
/**
* 字符串ip转换为long
* @param 字符串ip
* 通过左移位操作给每一段的数字加权,第一段的权为2的24次方, 第二段的权为2的16次方, 第三段的权为2的8次方, 最后 一段的权为1
* @return
*/
public static long getStringIpToLong(String ip) {
String[] ips = ip.split("[.]");
long num = 16777216L*Long.parseLong(ips[0]) + 65536L*Long.parseLong(ips[1]) + 256*Long.parseLong(ips[2]) + Long.parseLong(ips[3]);
return num;
}
/**
* 长整型ip转换为string
* @param long型ip
* @return
*/
public static String getLongIpToString(long ipLong) {
long mask[] = {0x000000FF,0x0000FF00,0x00FF0000,0xFF000000};
long num = 0;
StringBuffer ipInfo = new StringBuffer();
for(int i=0;i<4;i++){
num = (ipLong & mask[i])>>(i*8);
if(i>0) ipInfo.insert(0,".");
ipInfo.insert(0,Long.toString(num,10));
}
return ipInfo.toString();
}
}
**********************************************
以上是从网上摘录的,其中的算法不太清楚,哪位高手可以帮忙解释一下?