IP位址比較方法有很多種,可以比較字串,也可以比較數位。。
將IP位址拆分陣列。。例如201.221.122.9=201*256*256*256+221*256*256+122*256+9然後在比較

 

寫這樣的一個方法,把ip位址變換成一個long類型的數

 

static long ip2num(String ip){
String[] ips=ip.split("\\.");
long result=0;
for(int i=0;i <4;i++){
long temp=Integer.parseInt(ips[i]);
result+=temp < <((3-i)*8);
}
return result;
}
這樣就把開始ip和結束ip都變成數了.
然後從這兩個數之間迴圈,把裡面所有的數再變成ip位址.



 

電騾(emule)目錄config\ip-to-country.csv

 

摘取前幾行:

 

33996344,33996351,GB,GBR,英國
50331648,69956103,US,USA,美國
69956104,69956111,BM,BMU,百慕達群島
69956112,83886079,US,USA,美國
94585424,94585439,SE,SWE,瑞典
100663296,121195295,US,USA,美國

 

前面兩個數值就是IP整型範圍



 

202.103.0.0 = 202*256*256*256 + 103*256*256 + 0*256 + 0 = a
202.103.45.255 = 202*256*256*256 + 103*256*256 + 45*256 + 255 = b
然後根據a,b的值去下面看是哪部分
其實這些資訊可以放到資料庫的一個表裡面
33996344,33996351,GB,GBR,英國
50331648,69956103,US,USA,美國
69956104,69956111,BM,BMU,百慕達群島
69956112,83886079,US,USA,美國
94585424,94585439,SE,SWE,瑞典
100663296,121195295,US,USA,美國
直接通過移位運算得到4個8位的數,組合成字串就行了.
arrow
arrow
    全站熱搜

    戮克 發表在 痞客邦 留言(0) 人氣()