【发布时间】:2022-01-02 10:20:33
【问题描述】:
我需要了解如何确定提供的子网掩码示例 (255.255.192.0) 是否是有效的子网掩码,如果有效则返回 true,否则返回 false,我已经在检查该值是否超过 255。错误的子网将是 (255.64.0.0)
它在二进制中很有意义 (11111111.01000000.00000000.00000000) 子网不能停止拥有 1,然后再次开始拥有它们。我目前的想法涉及使用 bitshift,但我不确定如何去做。
我没有使用任何库,并且不允许用于此项目
我使用的代码类似于
Console.WriteLine("Enter a subnet mask");
input = Console.ReadLine(); //Enters example of 255.64.0.0 which is invalid
提前致谢,如有需要请提问
【问题讨论】:
-
如果我自己写的话。将值转换为 int(按机器字节顺序)。 XOR 将
111000翻转为000111加1,所以你现在应该有001000。如果地址有效,您最多应该设置 1 位。现在将最后两个值加在一起。如果答案为零,则地址是有效掩码。 -
不是真的,你链接的代码显示了如何找到一个子网并检查它是否是正确的长度,我需要检查即使是错误的长度,它是否仍然有效
-
@JeremyLakeman 惊人的答案,我明白你的意思,但如果你明白我的意思,我不太擅长将文字转化为代码,如果你有时间,你能不能写一个例子
标签: c#