[英]Why does System.Net.IPAddress use signed types?
方法IPAddress(Int64)
和Int32 HostToNetworkOrder(Int32)
在System.Net.IPAddress
两种用途的IP地址符号类型。
这使得有必要将HostToNetworkOrder
的结果用作IPAddress
构造函数的参数时,将其HostToNetworkOrder
为以下代码:
UInt32 netOrderU32 = (UInt32)IPAddress.HostToNetworkOrder((Int32)ipVal);
IPAddress tempIP = new IPAddress(netOrderU32);
如果网络顺序值不是未签名的,则诸如192.168.0.255的地址将导致ArgumentOutOfRangeException。 这可能是因为IPAddress(Int64)
不接受大于0x00000000FFFFFFFF的值,但从Int32转换时(net-order)192.168.0.255的Int64表示形式是0xffffffffffff00a8c0吗?
即使IP地址没有任何签名概念,使用签名类型也有什么意义吗? 似乎只使用无符号类型会更简单。
选择签名类型有什么具体原因吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.