C#中比较IP大小

刚刚遇到一个问题复现一下
ip1-ip2是数据库现有的IP段
我要新存ip3 - Ip4 要求新存的IP段不能再之前的IP段中存在
例如旧的IP段IP1为 “192.168.0.1” IP2为“192.168.0.22”;
在这期间的不允许再有IP段了
我新存一个IP起始为IP3“192.168.0.4” IP4为“192.168.0.77”这时候显然不可以因为 0.4 -0.22中间是有重复的
我的判断逻辑是这样写的
IP2>=IP3&&IP1<=IP4 如果有的话就是存在重叠 看起来没问题
实际在执行过程中sql会认为0.22<0.4
解决方案:

   private static uint IPToID(string addr)
        {
     
            if (!IPAddress.TryParse(addr, out var ip))
            {
     
                return 0;
            }
            byte[] bInt = ip.GetAddressBytes();
            if (BitConverter.IsLittleEndian)
            {
     
                Array.Reverse(bInt);
            }
            return BitConverter.ToUInt32(bInt, 0);
        }
 			string ip1 = "192.168.0.22";
            uint a = IPToID(ip1);
            string ip2 = "192.168.0.4";
            uint b= IPToID(ip2);
            if (a>b)
            {
     
                Console.WriteLine("True");
            }
            else
            {
     
                Console.WriteLine("False");
            }

C#中比较IP大小_第1张图片
最终可以看到,我比较出了我想要的大小。

你可能感兴趣的:(随笔)