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