【问题标题】:Convert CIDR mask to IP mask将 CIDR 掩码转换为 IP 掩码
【发布时间】:2020-12-22 15:44:06
【问题描述】:

将 CIDR 子网掩码转换为 IP 掩码标准的最简单方法是什么?

假设CIDR中的掩码是24,那么我需要得到255.255.255.0

【问题讨论】:

  • 大小为掩码开头的二进制1的个数。所以掩码是 0xFFFFFF00
  • 尝试以下操作:int maskSize = 24; UInt32 hex = (UInt32)Enumerable.Range(0,maskSize).Sum(x => (1 > 24).ToString(), ((hex >> 16) & (0xFF)).ToString(), ((hex >> 8) & (0xFF) ).ToString(), (hex & (0xFF)).ToString());
  • 你也可以让最后一行:string mask = string.Join(".", Enumerable.Range(0, 4).Reverse().Select(x => ((hex >> (8 * x)) & 0xFF).ToString()));

标签: c# ip subnet cidr


【解决方案1】:
using System;
using System.Net;

namespace test2
{
    class Program
    {
        static IPAddress CidrToMask(int cidr)
        {
            int shift = 32 - cidr;
            UInt32 mask;
            if (shift >= 32)
                mask = 0;
            else
                mask = (0xFFFFFFFF << shift) >> shift;

            return new IPAddress(mask);
        }

        static void Main(string[] args)
        {
            for (int i = 0; i <= 32; i++)
                Console.WriteLine("cidr {0}, mask {1}", i, CidrToMask(i).ToString());
        }
    }
}

结果输出:

cidr 0, mask 0.0.0.0
cidr 1, mask 1.0.0.0
cidr 2, mask 3.0.0.0
cidr 3, mask 7.0.0.0
cidr 4, mask 15.0.0.0
cidr 5, mask 31.0.0.0
cidr 6, mask 63.0.0.0
cidr 7, mask 127.0.0.0
cidr 8, mask 255.0.0.0
cidr 9, mask 255.1.0.0
cidr 10, mask 255.3.0.0
cidr 11, mask 255.7.0.0
cidr 12, mask 255.15.0.0
cidr 13, mask 255.31.0.0
cidr 14, mask 255.63.0.0
cidr 15, mask 255.127.0.0
cidr 16, mask 255.255.0.0
cidr 17, mask 255.255.1.0
cidr 18, mask 255.255.3.0
cidr 19, mask 255.255.7.0
cidr 20, mask 255.255.15.0
cidr 21, mask 255.255.31.0
cidr 22, mask 255.255.63.0
cidr 23, mask 255.255.127.0
cidr 24, mask 255.255.255.0
cidr 25, mask 255.255.255.1
cidr 26, mask 255.255.255.3
cidr 27, mask 255.255.255.7
cidr 28, mask 255.255.255.15
cidr 29, mask 255.255.255.31
cidr 30, mask 255.255.255.63
cidr 31, mask 255.255.255.127
cidr 32, mask 255.255.255.255

【讨论】:

    猜你喜欢
    • 2012-04-30
    • 2021-06-02
    • 2016-02-18
    • 2016-05-06
    • 2021-05-14
    • 2019-08-21
    • 1970-01-01
    • 2017-10-29
    • 2021-07-15
    相关资源
    最近更新 更多