一、ip地址转换成数字
def iplog(ip:String):Long ={
val s = ip.split("[.]").map(_.toLong)
var ipnum = 0L
for(i <- s){
ipnum= i |ipnum << 8
}
ipnum
}
二、二叉树方法
def binarySearch(ipnum: Long, ipRulers: Array[(String, String, String, String, String)]): Int = {
//获取规则文件数据的索引
var start =0
var end = ipRulers.length-1
while(start <= end){
var middle =(start+end) /2
val t = ipRulers(middle)
val startIp = t._1.toLong
val stopIp = t._2.toLong
if(ipnum >= startIp && ipnum <= stopIp ){
return middle
} else if( ipnum < startIp){
end = middle -1
}else if( ipnum > startIp){
start = middle +1
}
}
-1
}