C#中比较IP大小
Posted 沧海·
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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大小的主要内容,如果未能解决你的问题,请参考以下文章