两种方法IPAddress(Int64)
都使用签名类型Int32 HostToNetworkOrder(Int32)
的System.Net.IPAddress
IP 地址。
这使得有必要在将结果HostToNetworkOrder
用作构造函数的参数时将结果强制转换IPAddress
,从而产生如下代码:
UInt32 netOrderU32 = (UInt32)IPAddress.HostToNetworkOrder((Int32)ipVal);
IPAddress tempIP = new IPAddress(netOrderU32);
如果 network-order 值不是无符号的,则 192.168.0.255 等地址将引发 ArgumentOutOfRangeException。这可能是由于IPAddress(Int64)
不接受大于 0x00000000FFFFFFFF 的值但从 Int32 转换时 (net-order)192.168.0.255 的 Int64 表示为 0xffffffffff00a8c0 引起的吗?
即使 IP 地址没有任何签名概念,使用签名类型有什么意义吗?似乎只使用无符号类型会简单得多。
选择签名类型有什么具体原因吗?