//测试数据
int[] range = Enumerable.Range(0, 33).ToArray();
foreach (int r in range)
{
if (r == 0)
{
Debug.WriteLine("0->0.0.0.0");
continue;
}
var bits = 0xffffffff << (32 - r);
var bytes = BitConverter.GetBytes((uint)bits);
var res = string.Join(".", bytes.Reverse().ToArray());
Debug.WriteLine(string.Format("{0}->{1}", r, res));
}
//封装函数
public static string MaskBitsToMaskDec(int maskBits)
{
if (maskBits == 0)
{
return "0.0.0.0";
}
var bits = new BitVector32(-1 << (32 - maskBits)); //0xffffffff << (32 - maskBits)
var bytes = BitConverter.GetBytes((uint)bits.Data);
var res = string.Join(".", bytes.Reverse().ToArray());
return res;
}