将识别有效IPv4地址的算法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将识别有效IPv4地址的算法相关的知识,希望对你有一定的参考价值。
我必须编写一个算法,以点十进制格式识别有效的IPv4地址。如果IP由四个八位字节组成,则应视为有效,其中0到255(包括)的值也为0(例如01.02.03.04)被认为无效。
public static bool is_valid_IP(string IpAddres)
{
string[] adress = IpAddres.Split('.');
if (adress.Length!=4)
{
return false;
}
for (int i = 0; i < 4; i++)
{
int result;
if (adress[i][0]=='0')
{
return false;
}
if (!int.TryParse(adress[i], out result))
{
return false;
}
if (result >255)
{
return false;
}
}
return true;
}
它确实适用于我尝试的所有IP,但我学校的测试(不知道它们是什么)说它是错的。有人能指出我做错了吗?
答案
0.0.0.0
is a valid IP address而the following will reject it。
if (adress[i][0]=='0')
{
return false;
}
另一答案
为什么不使用IPAddress类来解析它?
IPAddress address = IPAddress.Parse(ipAddress);
https://msdn.microsoft.com/en-us/library/system.net.ipaddress.parse(v=vs.110).aspx
另一答案
我很确定你的解析器会说双位或单位负ips是有效的。
另一答案
你需要检查前导零,如果它存在返回false,你的测试只检查前0,如果测试是001.002.003.4,它将失败,使用if (adress.StartsWith("0"))
但排除0.0.0.0
您还需要检查负数,使用TryParse的结果
以上是关于将识别有效IPv4地址的算法的主要内容,如果未能解决你的问题,请参考以下文章