Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将IP地址范围转换为CIDR格式,反之亦然_C#_Network Programming_Ip_Cidr - Fatal编程技术网

C# 将IP地址范围转换为CIDR格式,反之亦然

C# 将IP地址范围转换为CIDR格式,反之亦然,c#,network-programming,ip,cidr,C#,Network Programming,Ip,Cidr,我需要将IP范围转换为CIDR符号,反之亦然。我通过IPNetwork库通过以下方式解决了该问题: 从CIDR到范围的转换: var ip = IPNetwork.Parse("192.168.168.100/24"); Console.WriteLine(ip.FirstUsable.ToString() + "/" + ip.LastUsable.ToString()); 以及从范围到CIDR的转换: IPNetwork network = IPNetwork.Pa

我需要将
IP
范围转换为
CIDR
符号,反之亦然。我通过
IPNetwork
库通过以下方式解决了该问题:

CIDR
到范围的转换:

    var ip = IPNetwork.Parse("192.168.168.100/24");
    Console.WriteLine(ip.FirstUsable.ToString() + "/" + ip.LastUsable.ToString());
以及从范围到CIDR的转换:

    IPNetwork network = IPNetwork.Parse("192.168.168.0");
    IPNetwork network2 = IPNetwork.Parse("192.168.168.255"); 
    IPNetwork ipnetwork = IPNetwork.Supernet(network, network2);
    Console.WriteLine(ipnetwork.FirstUsable + "/" + ipnetwork.Cidr);
看来它可以很好地工作。但当我使用自定义工具时,它们返回的结果略有不同

对于
192.168.168.100/24

IPNetwork
lib返回
192.168.168.1
-
192.168.168.254

返回
192.168.168.0
-
192.168.168.255

返回
192.168.168.1
-
192.168.168.254

返回

192.168.168.1/32
192.168.168.2/31
192.168.168.4/30
192.168.168.8/29
192.168.168.16/28
当我试图转换
192.168.168.1-192.168.168.254
CIDR
。 我真的很困惑,不同的工具会产生不同的结果。
此外,我的目标是为用户创建一个白名单,并在他们来时检查他们的
IP
s,因此这是一个非常重要的问题。

考虑到CIDR符号192.168.168.100/24:

Network address is 192.168.168.0 
First usable address is 192.168.168.1
Last usable address is 192.168.168.254 
Broadcast address is 192.168.168.255 
Network mask is 255.255.255.0

没有也不可能没有歧义。

给定CIDR符号192.168.168.100/24:

Network address is 192.168.168.0 
First usable address is 192.168.168.1
Last usable address is 192.168.168.254 
Broadcast address is 192.168.168.255 
Network mask is 255.255.255.0

没有,也不可能没有歧义。

Read,它解释得很好。@JoachimPileborg那么用户可以拥有以0或255结尾的IP吗?如果你阅读链接的答案,它会说以
0
结尾在某些有限的情况下是有效的,
255
是广播地址(任何系统都不能使用)。是的,这两个地址都是有效的,但实际上都不在范围内。@JoachimPileborg非常感谢,但是关于结果你能说些什么呢?阅读,它解释得很好。@JoachimPileborg用户的IP是否可以以0或255结尾?如果你阅读链接的答案,它说以
0
结尾在某些有限的情况下是有效的,而
255
是广播地址(任何系统都不能使用)。是的,两个地址都是有效的,但不在范围内。@JoachimPileborg非常感谢,但是关于结果你能说些什么呢?