System.Net.NetworkInformation.SystemUnicastIPAddressInformation.PrefixLengthToSubnetMask C# (CSharp) Method

PrefixLengthToSubnetMask() private static method

private static PrefixLengthToSubnetMask ( byte prefixLength, AddressFamily family ) : IPAddress
prefixLength byte
family AddressFamily
return System.Net.IPAddress
        private static IPAddress PrefixLengthToSubnetMask(byte prefixLength, AddressFamily family)
        {
            Debug.Assert((0 <= prefixLength) && (prefixLength <= 126));
            Debug.Assert((family == AddressFamily.InterNetwork) || (family == AddressFamily.InterNetworkV6));

            byte[] addressBytes;
            if (family == AddressFamily.InterNetwork)
            {
                addressBytes = new byte[4];
            }
            else
            {
                Debug.Assert(family == AddressFamily.InterNetworkV6);
                addressBytes = new byte[16];
            }

            Debug.Assert(prefixLength <= (addressBytes.Length * 8));

            // Enable bits one at a time from left/high to right/low.
            for (int bit = 0; bit < prefixLength; bit++)
            {
                addressBytes[bit / 8] |= (byte)(0x80 >> (bit % 8));
            }

            return new IPAddress(addressBytes);
        }
    }