我尝试转换掩码IP地址的格式(称为通配符掩码)。 我想要,例如,
有人知道我怎么做到这一点? 从理论上讲,它应该很简单,因为我只需要反转字节中的所有位。 我认为我的反转位功能不起作用?我怎么能这样做? 谢谢你!! :)
//Retreive IP Subnet Mask (ex: Format 0.0.0.255)
IPAddress SubnetMask = IPAddress.Parse(template_script[line_delimiter].Split(' ')[2]);
//Retreive bytes array of Mask
byte[] bytes = SubnetMask.GetAddressBytes();
//Reverse all bit in bytes
byte[] reversed = Function.InvertBits(bytes);
//Retreive IP Address of inverted byte array
IPAddress SubnetMask_inverted = new IPAddress(reversed);
MessageBox.Show("Subnet original: " + SubnetMask.ToString() + "\nSubnet inverted : " + SubnetMask_inverted.ToString());
答案 0 :(得分:1)
我认为你在ReverseBits
中所做的数学运算有点不对,你正在尝试的正确术语是Invert
,这就是我将如何做到的。
public static void InvertArray(byte[] array)
{
for(int i = 0; i < array.Length; i++)
{
array[i] = (byte)(255 - array[i]);
}
}
答案 1 :(得分:1)
另一种更有效的方法是使用bitwise NOT operator:
直接反转这些位public static void InvertArray(byte[] array)
{
for(int i = 0; i < array.Length; i++)
{
array[i] = (byte)~array[i];
}
}