IPv6 CIDR 范围

IPv6 CIDR to range

我有一个 CIDR Ipv6 地址列表

2c0f:fe40:8000::/48
2c0f:feb0::/43
2c0f:feb0:20::/45

如何在不使用外部库(不包含在 VS 安装中)的情况下获取 IP 范围从 - 到? 这不是 的副本,因为我的问题是指 IPv6 表示法,而不是 IPv4。

示例:

Input: 2c0f:fe40:8000::/48
Output: 2c0f:fe40:8000:0:0:0:0:0 - 2c0f:fe40:8000:ffff:ffff:ffff:ffff:ffff

IPNetwork2 是一个很棒的 nuget 包,几乎可以满足您所有与网络地址相关的需求。

有了它,您可以轻松解析 IPV6 CIDR 并获取范围的第一个和最后一个 IP。

var ipnetwork = IPNetwork.Parse("2c0f:fe40:8000::/48");

Console.WriteLine("FirstUsable : {0}", ipnetwork.FirstUsable);
Console.WriteLine("LastUsable : {0}", ipnetwork.LastUsable);

来源可在 https://github.com/lduchosal/ipnetwork

我在没有使用任何外部库的情况下为您的问题编写了一个快速解决方案,here you can find the source code

有关如何使用它的示例:

CidrBlock block = CidrBlock.Parse("2c0f:fe40:8000::/48");
Console.WriteLine($"Start address: {block.StartAddress.IPAddress}");
Console.WriteLine($"End address: {block.EndAddress.IPAddress}");

会return

Start address: 2c0f:fe40:8000::
End address: 2c0f:fe40:8000:ffff:ffff:ffff:ffff:ffff

问候。-