zoukankan      html  css  js  c++  java
  • IP地址比较方法

    转载地址:http://hi.baidu.com/jordan51341/item/f827eb66a2e2b02568105ba3

    在进行IP地址查询的时候 往往需要比较这个IP地址是否是属于某个IP段中

    如:     202.202.202.100 在        202.202.1.1          --          202.202.255.255 范围内

    方法:

            1.     将IP地址每段转换为数字 a=202,     b=202,     c=202 ,     d=100

            2.     通过移位操作 再或操作 将四个整数合成一个整数

                 num=     (a << 24)     | (b<< 16)     | (c << 8)     |     d

           3.同样将IP区间的两个地址也这样转换为一个32位整数  

               begin=     (202 << 24)     | (202<< 16)     | (1 << 8)     |     1

               end=       (202 << 24)     | (202<< 16)     | (255<< 8)     |     255

           4.直接比较     begin <= num <= end 就可以得出是否属于该IP段

           5.将这样的32位整数转换为IP地址 方法同理
                 a = (IpNumber & 4278190080) >> 24;
                 b = (IpNumber & 16711680) >> 16;
                 c = (IpNumber &     65280) >> 8;
                 d =     IpNumber &     255;

                 IP= a.ToString() + "." + b.ToString() + "." + c.ToString() + "." + d.ToString()

    ----------------------------------------------------------------------------------------------------------------------------

    附上:此功能的类(C#)      

              #region 转换IP地址为整型
        /// <summary>
        /// 转换IP地址为整型
        /// </summary>
        /// <param name="ip"></param>
        /// <returns></returns>
        public ulong IP2ulong(string ipAddress)
        {
            byte[] bytes = IPAddress.Parse(ipAddress).GetAddressBytes();
            ulong ret = 0;

            foreach(byte b in bytes)
            {
                ret <<= 8;
                ret |= b;
            }
            return ret;
        }
        #endregion

  • 相关阅读:
    自动化测试框架相关资料下载
    C++白盒测试最佳实践课程,3个免费名额火热申请中,31号前截止申请...
    亿能测试培训中心 下周进入完整自动化测试项目实训阶段
    亿能测试大讲堂
    自动化测试调查问卷送《QTP自动化测试最佳实践》
    8月白盒测试课程
    广州亿能自动化测试沙龙
    8月自动化测试课程
    广州亿能自动化测试沙龙
    史上最强的自动化测试课程7月开设
  • 原文地址:https://www.cnblogs.com/smthts/p/2670221.html
Copyright © 2011-2022 走看看