看来我说的太粗略了,现在细致的讲一下,请帮忙!
我的IP地址库在致如下:
   ip1                 ip2            address
002.006.190.056  002.006.190.063       英国比如我得到一个IP地址为:002.006.190.060  我怎么用这个IP和IP1、IP2进行比较呢?

解决方案 »

  1.   

    你的IP地址库是什么概念?如果比较国家,应该只取第一段的数字吧。
    最好看看IP地址的点分法的规则。
      

  2.   

    使用ip最原始的表示方法4个byte即一个32位的int(0xFF & 0x02 << 24) | (0xFF & 0x06 << 16) | (0xFF & 0xBE << 8) | (0xFF & 0x38)
    由此得到:
    (0xFF & byte1 << 24) | (0xFF & byte2 << 16) | (0xFF & byte3 << 8) | (0xFF & byte4)这样就变成了int的比较,呵呵。
      

  3.   

    不好意思错了
    应该是:
    (0xFF000000 & 0x02 << 24) | 
    (0x00FF0000 & 0x06 << 16) | 
    (0x0000FF00 & 0xBE << 8)  | 
    (0xFF & 0x38)
      

  4.   

    我说的IP地址库就是一个数据库,数据结构是这样的:
        ip1               ip2            country         city
    162.105.021.000  162.105.021.255       中国       北京大学物理系
    162.105.022.000  162.105.022.255       中国       北京大学化学系
    162.105.023.000  162.105.023.255       中国       北京大学地球物理系得到一个IP地址后在数据库里进行检索,如果存在满足大于IP1小于IP2的条件的记录,则取country和city两个字段的值,比如我得到的IP是162.105.22.125 肯定不能直接的用IP>IP1 and IP<IP2 进行比较,那应该怎样进行比较呢?不知这样说大家明白我的意图否?
      

  5.   

    to:takecare(大厅)
    您说的方法我开始用了,动网论坛用的也是这个,可是存在一个问题就是比如000.000.000.000 这个IP如何转成32位的INT型呢?
      

  6.   

    你的字典可以这样的一系列int值
    static final int IP_CHINA_START 0Xxxxxxxxx //中国ip开始值
    static final int IP_CHINA_END   0Xxxxxxxxx //中国ip结束值
    ......
      

  7.   

    //jdk1.4
    //for examplestatic finale String sampleIP = "162.105.021.000"
    String[] subs = sampleIP.split(".");
    int intIP = 0;
    for (int i = 0; i < subs.length; i++) {
       try {
           intIP |= Integer.parseInt(subs[i]) << ((3 - i) * 8);
       } catch (NumberFormatException e ) {}
    }
      

  8.   

    将你得到的IP地址利用 String.indexOf(String str) 与 String.substring(int beginIndex, int endIndex) 拆开后,利用加0补足三位,然后再比较即可。
      

  9.   

    谢谢各位,问题已解决!可以访问这个地址看下效果!http://161.207.1.70/cnpc/iptest.jsp