我遇到与this问题相同的问题,但我的语言是C#(所以没有toHexString方法)。所以,我的问题是我有这两个IP:
String start = "192.168.0.2"
String end = "192.168.0.254"
我希望最终得到一个包含以下内容的列表:
192.168.0.2
192.168.0.3
192.168.0.4
192.168.0.5
...
192.168.0.254
我的第一个解决方案是循环遍历每个字节的所有可能IP。所以
var startIpArray = start.Split('.');
var endIpArray = end.Split('.');
if (startIpArray [3] != endIpArray[3])
{
for (var i = startIpArray [3]; i < endIpArray[3] ; i++)
{
listOfIps.Add($"{startIpArray[0]}.{startIpArray[1]}.{startIpArray[2]}.{i}");
}
}
对每个组重复一遍,每个数字的循环次数越来越多。我的解决方案太可怕了。有没有更好的办法?我所拥有的范围从来没有大到足以让我耗尽内存制作巨型名单,所以不用担心。
答案 0 :(得分:1)
使用IPAddressRange
库,您可以枚举您的IP:
var start = IPAddress.Parse("192.168.0.2");
var end = IPAddress.Parse("192.168.0.254");
var range = new IPAddressRange(start, end);
foreach (var ip in range)
{
Console.WriteLine(ip);
}