首页 > 其他分享 >CIDR计算

CIDR计算

时间:2023-12-19 13:13:09浏览次数:25  
标签:sbs int ToString 计算 var iplist CIDR cidr

public static string IPV4CIDR(string ipstart, string ipend) {
    var sl = ipstart.Split('.');
    var el = ipend.Split(".");
    StringBuilder sbs = new StringBuilder();
    StringBuilder sbe = new StringBuilder();
    List<char> cs = new List<char>();
    List<char> ce = new List<char>();
    foreach (var s in sl)
    {
        var t = Num2Str(int.Parse(s));
        sbs.Append(t.ToString());
        cs.AddRange(t.ToCharArray());
        //Console.WriteLine($"{s}={t}");
    }
    foreach (var s in el)
    {
        var t = Num2Str(int.Parse(s));
        sbe.Append(t.ToString());
        ce.AddRange(t.ToCharArray());
        //Console.WriteLine($"{s}={t}");
    }
    int cidr = 0;
    for (; cidr < 32; cidr++) {
        if (cs[cidr] != ce[cidr]) {
            break;
        }
    }
    List<string> iplist = new List<string>();
    int st = 0;
    do {
        int step = cidr - st > 8 ? 8 : (cidr - st);
        var one = sbs.ToString().Substring(0, step);
        var n = Str2Num(one.PadRight(8, '0'));
        iplist.Add(n.ToString());
        sbs = new StringBuilder(sbs.ToString().Substring(step, sbs.Length - one.Length));
        st += step;
    }
    while (st < cidr);

    switch (iplist.Count) {
        case 1:
            iplist.AddRange("0,0,0".Split(','));
            break;
        case 2:
            iplist.AddRange("0,0".Split(','));
            break;
        case 3:
            iplist.Add("0");
            break;
    }
    Console.WriteLine($"{string.Join('.',iplist.ToArray())}/{cidr}");
    //Console.WriteLine(sbs.ToString());
    //Console.WriteLine(sbe.ToString());
    //Console.WriteLine(cidr);
    return string.Empty;
}

public static string Num2Str(int s) {
    return Convert.ToString(s, 2).PadLeft(8, '0');
}

public static int Str2Num(string s)
{
    return Convert.ToInt32(s, 2);
}

 

标签:sbs,int,ToString,计算,var,iplist,CIDR,cidr
From: https://www.cnblogs.com/gxivwshjj/p/17913486.html

相关文章

  • 计算机图形:明暗处理
    目录多边形绘制算法恒定强度的明暗处理Gouraud明暗处理概述线性插值公式增量法线性插值Phong明暗处理概述双线性插值求法向量增量法线性插值求法向量快速Phong明暗处理小结参考多边形绘制算法通常用多边形近似表示物体,多边形的表面绘制一般用扫描线实现.而将光照模型应用于表面......
  • 模拟电路噪声计算
    运放电路噪声怎么计算?手把手计算指南,文末附自动计算工具!-知乎(zhihu.com) 噪声计算工具已经通过官网下载,下载地址为:http://e2e.ti.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-08-64/4812.Flicker-Noise-v1.xlsx ......
  • springboot045新闻推荐系统-计算机毕业设计源码+LW文档
    摘要随着信息互联网购物的飞速发展,国内放开了自媒体的政策,一般企业都开始开发属于自己内容分发平台的网站。本文介绍了新闻推荐系统的开发全过程。通过分析企业对于新闻推荐系统的需求,创建了一个计算机管理新闻推荐系统的方案。文章介绍了新闻推荐系统的系统分析部分,包括可行性分......
  • 计算机网络第四章部分题目解析,202页
    网络层向上提供的服务有哪两种?试比较其优缺点面向连接的服务(Connection-OrientedService):优点:可靠性高:通过建立连接、传输数据、最后释放连接的过程,可以保证数据的可靠性。有序性:数据传输是有序的,不会乱序到达。流量控制:可以通过连接的建立和释放来控制流量,防止网络拥......
  • Unity引擎2D游戏开发,人物属性及伤害计算
    一、创建敌人2D模型裁切野猪素材,并放置在Scene窗口中打开文件夹,找到野猪待机素材将素材进行必要的设置点击窗口中的SpriteEditor,打开裁切窗口。点击Slice,选择Type,进行按网格计数裁切(GridByCellCount)接着,然后在Column&Row中,写入4、1。即,4列1行。将中心点Pivot选择Bot......
  • 云计算
    云计算在整个体系中的定位,实际就是数据的集中化存储,计算,分析,展示主要是大数据能将基础设施,平台,软件作为服务出租的技术是云计算云计算使互联网IT更加简便、统一平台、服务化等。在云计算环境下,资源不是分散的硬件,而是让CPU、内存、磁盘、I/0等硬件变成可以管理的“资源池”。......
  • 云计算:IT行业的未来
    随着科技的飞速发展,信息技术(IT)已经成为我们日常生活中不可或缺的一部分。在这个日新月异的时代,云计算作为IT行业的一种创新技术,正逐渐改变着我们的生活和工作方式。本文将探讨云计算的概念、优势以及在各个领域的应用,以期对这一技术有更深入的了解。一、云计算的概念云计算是一种通......
  • 云原生向量计算引擎 PieCloudVector:为大模型提供独特记忆
    拓数派大模型数据计算系统(PieDataComputingSystem,缩写:πDataCS)在10月24日程序员节「大模型数据计算系统」2023拓数派年度技术论坛正式发布。πDataCS以云原生技术重构数据存储和计算,「一份存储,多引擎数据计算」,让AI模型更大更快,全面升级大数据系统至大模型时代。除云原生虚拟数......
  • 取巧解决js eval()计算精度丢失问题
    javaScript中存在小数点精度丢失的问题是由于其使用的浮点数表示方式。JavaScript采用的是双精度浮点数表示法,也称为IEEE754标准,它使用64位来表示一个数字,其中52位用于表示有效数字,而其他位用于表示符号、指数和特殊情况。由于使用有限的位数来表示无限的小数,JavaScript无法准确......
  • 2024 20231322《计算机基础与程序设计》第十二周学习总结
    作业信息|2022-2023-1-计算机基础与程序设计)||--|--||2022-2023-1计算机基础与程序设计第周作业||这个作业的目标|总结本周学习成果及疑问||作业正文|()|教材学习内容总结本周主要学习了数组和指针的相关内容教材学习中的问题和解决过程问题1:是否所有指针都要加*,包括函......