【发布时间】:2011-06-19 07:11:43
【问题描述】:
内置的 .Net 方法 System.Net.IPAddress.ToString() 对于 IPv6 地址的行为不一致。
给定字节数组0xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA,在某些环境中返回"aaaa:aaaa:aaaa:aaaa:aaaa:aaaa:aaaa:aaaa",而在其他环境中返回"aaaa:aaaa:aaaa:aaaa:aaaa:aaaa:172.172.172.172"。
我知道这两种格式都是有效的 IPv6 格式,但我希望能够解释其中的区别。
似乎较新的环境(Windows 7 和 Server 2008 R2)更有可能产生第一个行为,因此我检查了 .Net 框架版本等明显差异,但我无法检测到模式。
有没有一种方法可以让我选择一种格式而不是另一种格式,或者我是否必须围绕这个进行编码才能获得一致的行为?
要重新创建的代码:
byte[] bytes = {0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA};
IPAddress myIP = new IPAddress(bytes);
Console.WriteLine(myIP.ToString());
【问题讨论】:
标签: .net ip-address ipv6