【发布时间】:2019-08-21 18:40:30
【问题描述】:
告诉我如何得到一个等于FFFFFFFE 的值,结果证明只输出EFFFF 的相反顺序,并且没有FF 的前两个字符
源代码:Converting subnet mask “/” notation to Cisco 0.0.0.0 standard
var cidr = 23;
var zeroBits = 32 - cidr;
var result = uint.MaxValue;
result &= (uint)((((ulong)0x1 << cidr) - 1) << zeroBits);
result = (uint)IPAddress.HostToNetworkOrder((int)result);
textBoxHex.Text = result.ToString("X");
【问题讨论】:
-
更多与您的问题相关(我猜):您认为
IPAddress.HostToNetworkOrder会做什么? -
@elgonzo 然后我得到一个带有两个零的值
FFFFFE00 -
是的,这就是将低 9 位设置为零时得到的结果(因为您这样做了
zeroBits = 32 - cidr,cidr 为 23)。如果你不希望低 9 位为零,那么不要将低 9 位归零,我猜。查看FFFFFFFE的位表示(您想要的子网掩码)。那么右边会有多少个零位,那么zeroBits变量的值应该是多少呢?然后再看看子网掩码中有多少个 1(一)位,那么cidr的值应该是多少? -
"FFFFFFFE = mask 255.255.254.0 = mask sidr /23" 不。那不是真的。好吧,“mask 255.255.254.0 = cidr /23”是真的,但是“FFFFFFFE = mask 255.255.254.0”根本不是真的。您是如何最终相信子网掩码 255.255.254.0 的十六进制值/表示会是 FFFFFFFE?
-
是的,FFFFFE00 正是您为 /23 CIDR 获得的结果值... ;-)
标签: c# .net winforms hex netmask