[英]Algorithm that will identify valid IPv4 addresses
我必须编写一种算法,以点十进制格式标识有效的IPv4地址。 如果IP由四个八位位组组成,则其值应介于0..255(包括)之间,并且零(例如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,但是我学校的测试(不知道它们是什么)却说这是错误的。 有人可以指出我做错了什么吗?
if (adress[i][0]=='0')
{
return false;
}
为什么不使用IPAddress类进行解析?
IPAddress address = IPAddress.Parse(ipAddress);
https://msdn.microsoft.com/zh-CN/library/system.net.ipaddress.parse(v=vs.110).aspx
我很确定您的解析器会说两位或一位负IP是有效的。
您将需要检查前导零,如果存在则返回false,则您的测试仅检查前0,如果测试为001.002.003.4,则它将失败,请使用if (adress.StartsWith("0"))
但排除在外0.0.0.0
您还需要检查负数,使用TryParse中的结果
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.