温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

计算连续的IP地址问题

发布时间:2020-07-26 11:45:23 来源:网络 阅读:505 作者:guwei4037 栏目:编程语言

题目:要求计算连续的IP地址。

举例:起始IP为192.168.2.2,IP总个数为3,那么要求得的所有IP的为192.168.2.2,192.168.2.3,192.168.2.4。再举个例子,起始IP为192.168.2.253,IP总个数为5那么要求得的所有IP为192.168.2.253,192.168.2.254,192.168.2.255,192.168.3.0,192.168.3.1。

按照传统的解法可以这么做:

static void Main(string[] args)
{
    string ip = "192.168.2.253";//起始IP
    int count = 5;//要计算连续IP的个数
                
    var ipValue = BitConverter.ToUInt32(IPAddress.Parse(ip).GetAddressBytes().Reverse().ToArray(), 0);
                
    for (uint i = 0; i < count; i++)
    {
        IPAddress newIp = IPAddress.Parse((ipValue + i).ToString());
        Console.WriteLine(newIp);
    }
}

那如果我们用linq稍微改造一下,可以这么干:

static void Main(string[] args)
{
    string ip = "192.168.2.253";//起始IP
    int count = 5;//要计算连续IP的个数
           
    var ipValue = BitConverter.ToUInt32(IPAddress.Parse(ip).GetAddressBytes().Reverse().ToArray(), 0);
           
    var newIps = from p in Enumerable.Range(0, count)
                 let newIp = ipValue + p
                 select new { IP = IPAddress.Parse(newIp.ToString()) };
           
    foreach (var newIp in newIps)
    {
        Console.WriteLine(newIp.IP);
    }
}

答案:

192.168.2.253
192.168.2.254
192.168.2.255
192.168.3.0
192.168.3.1

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI