Встроенный метод .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 Framework, но не смог обнаружить шаблон.
Есть ли способ, которым я могу выбрать один формат поверх другого, или мне нужно кодировать это, чтобы получить согласованное поведение?
Код для воссоздания:
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());