在分析网站的客户来源经常会要求根据客户的ip地址去判断客户国家位置或者城市位置。当然要做到这一步,你要有一个详细的ip地址库。
ip地址库中一般是通过ip地址转换来的数字(长整数)来划分国家或者城市。ip地址库数据库的一般格式为:
...
startIpLongNumber endIpLongNumber CountryName CountryCode CityName
...
而在应用中需要将客户的ip地址字符串转成一个长整数,然后才能到地址库中去查找。
下面就给出ip->long , long->ip的转换方法。
scala:
def ip2Long(ip: String): Long = {
//用.分割ip
val fragments = ip.split("[.]")
var ipNum = 0L
//循环ip的4个数
for (i <- 0 until fragments.length) {
ipNum = fragments(i).toLong | ipNum << 8L
}
ipNum
}
Java代码:
/**
* ip地址转成整数.
* @param ip
* @return
*/
public static long ip2long(String ip) {
String[] ips = ip.split("[.]");
long num = 16777216L*Long.parseLong(ips[0]) + 65536L*Long.pars