我如何比较两个IP地址?
string ip1 = "123.123.123.123";
string ip2 = "124.124.124.124";
Run Code Online (Sandbox Code Playgroud)
我需要这样的一些:
if(ip1 == ip2)
{
//true
}
Run Code Online (Sandbox Code Playgroud)
Lee*_*Lee 25
似乎System.Net.IPAddress定义了它自己的Equals覆盖,所以这应该工作:
IPAddress ip1 = IPAddress.Parse("123.123.123.123");
IPAddress ip2 = IPAddress.Parse("124.124.124.124");
if(ip1.Equals(ip2))
{
//...
}
Run Code Online (Sandbox Code Playgroud)
Jar*_*Par 18
IPAddressBCL中的类型支持相等,可用于此目的.
public static bool IsSameIPAddress(string ip1, string ip2) {
IPAddress leftIP = IPAddress.Parse(ip1);
IPAddress rightIP = IPAddress.Parse(ip2);
return leftIP.Equals(rightIP);
}
Run Code Online (Sandbox Code Playgroud)
有些人想知道为什么直接字符串比较是不够的.原因是IP地址可以合法地表示为基数10和十六进制表示法.因此,相同的IP地址可以具有多于1个字符串表示.
例如
var left = "0x5.0x5.0x5.0x5";
var right = "5.5.5.5";
IsSameIPAddress(left,right); // true
left == right; // false
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12758 次 |
| 最近记录: |