Проверка IP адреса на валидность, если в одном из байтов есть начальный нуль - C#
Формулировка задачи:
Добрый день. Считываю параметры из текстового файла, в т.ч. и IP-адрес.
Столкнулся с тем, что IPAddress.Parse(string RemoteIpServer) странным образом преобразовывает String в IPAddress, если в одном из байтов начальным указан нуль (192.168.1.045). Если в одном из байтов IP-адреса нет начальных нулей, то все в порядке (192.168.1.45). Например:
Вывод:
//192.168.1.45
Вывод:
//192.168.1.37
Есть ли метод, который преобразует string в IPAddress правильно в последнем случае?
string RemoteIpServer="192.168.1.45"; IPAddress address = IPAddress.Parse(RemoteIpServer); Console.WriteLine(address);
string RemoteIpServer="192.168.1.045"; //является вполне допустимо использовать такой IP. IPAddress address = IPAddress.Parse(RemoteIpServer); Console.WriteLine(address);
Решение задачи: «Проверка IP адреса на валидность, если в одном из байтов есть начальный нуль»
textual
Листинг программы
static void Main(string[] args) { String IP_String="192.168.1.040"; IPAddress ip; if (!IPAddress.TryParse(IP_String, out ip)) return; ip=string_to_ip_convert(IP_String); } static IPAddress string_to_ip_convert(string IP_string) { String[] bytes = IP_string.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries); IP_string = ""; int i = 0; foreach (string one_byte in bytes) { //bytes[i] = one_byte.TrimStart('0'); string temp = one_byte.TrimStart('0'); IP_string = IP_string + temp; if (i < 3) IP_string = IP_string + "."; i++; } Console.WriteLine("Обработанный IP:" + IP_string); IPAddress ip = IPAddress.Parse(IP_string); return ip; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д