我需要将网络掩码(存储为IPAddress)转换为前缀长度(存储为整数)。由于字节的字节序问题,我的方法不起作用:
using System;
using System.Collections;
using System.Net;
namespace NetmaskTest
{
class Program
{
static void Main(string[] args)
{
var netmask = IPAddress.Parse("255.255.252.0");
var bitArray = new BitArray(netmask.GetAddressBytes());
Console.Write("Is : ");
foreach (bool bit in bitArray)
{
Console.Write(bit ? 1 : 0);
}
Console.WriteLine();
Console.WriteLine("Should: 11111111111111111111110000000000");
Console.ReadKey();
}
}
}
输出:
Is : 11111111111111110011111100000000
Should: 11111111111111111111110000000000
如图所示,第三个字节(而不是整个BitArray)存储为小字节序,但是我显然需要将所有设置的位存储在一起以可靠地对其进行计数。考虑到主机字节顺序,最好的方法是什么?