csharp 将子网掩码v4转换为CIDR(int)表示法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csharp 将子网掩码v4转换为CIDR(int)表示法相关的知识,希望对你有一定的参考价值。

static int Mask2CIDR(string subnetmask)
{
    try
    {
        Byte[] ipbytes = IPAddress.Parse(subnetmask).GetAddressBytes();

        uint subnet = 16777216 * Convert.ToUInt32(ipbytes[0]) +
            65536 * Convert.ToUInt32(ipbytes[1]) + 256 * Convert.ToUInt32(ipbytes[2]) + Convert.ToUInt32(ipbytes[3]);
        uint mask = 0x80000000;
        uint subnetConsecutiveOnes = 0;

        for (int i = 0; i < 32; i++)
        {
            if (!(mask & subnet).Equals(mask)) break;

            subnetConsecutiveOnes++;
            mask = mask >> 1;
        }

        return (int)subnetConsecutiveOnes;
    }
    catch
    {
        return -1;
    }
}

以上是关于csharp 将子网掩码v4转换为CIDR(int)表示法的主要内容,如果未能解决你的问题,请参考以下文章

子网划分的CIDR

Ip地址和子网掩码和CIDR无间别域间路由

c类ip CIDR

VLSM和CIDR-路由交换原理3-HCNA笔记

VLSM和CIDR-路由交换原理3-HCNA笔记

CIDR与VLSM的区别