打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
IP地址比较方法

IP地址比较方法

在进行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

 

也可以直接把IP地址中间的点去掉直接比较两个数如202.202.202.1 202.202.1.255 比较 202202202001>202202001255 两个千亿级的数比较 在C/C++ 需要使用long long类型保存数据 在.NET下使用Int64 保存
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C# udp组播
关于C#中的ping
C#下的Raw Socket编程实现网络封包监视
用C#的raw socket实现网络监控
WPF 获取本地IP地址
网络基础知识大全
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服