sk.*_*sk. 29
取决于您正在使用的语言,但IP地址通常存储为32位无符号整数,至少在网络层存储,使得比较速度非常快.即使不是这样,除非您正在设计高性能分组交换应用程序,否则它不太可能成为性能瓶颈.避免过早优化 - 设计程序的可测试性和可伸缩性,如果遇到性能问题,可以使用分析器查看瓶颈所在.
编辑:澄清一下,IPv4地址存储为32位整数,加上网络掩码(IP地址比较不需要).如果您使用的是较新且当前更为罕见的IPv6,则地址长度为128位.
static public bool IsEqual(string ToCompare,
string CompareAgainst)
{
return IPAddressToLongBackwards(ToCompare)==IPAddressToLongBackwards(CompareAgainst);
}
static private uint IPAddressToLongBackwards(string IPAddr)
{
System.Net.IPAddress oIP=System.Net.IPAddress.Parse(IPAddr);
byte[] byteIP=oIP.GetAddressBytes();
uint ip=(uint)byteIP[0]<<24;
ip+=(uint)byteIP[1]<<16;
ip+=(uint)byteIP[2]<<8;
ip+=(uint)byteIP[3];
return ip;
}
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,这是比较两个IP地址的代码.你想要这个吗?你可以进一步做这样的事情:
static public bool IsGreater(string ToCompare,
string CompareAgainst)
{
return IPAddressToLongBackwards(ToCompare)>
IPAddressToLongBackwards(CompareAgainst);
}
Run Code Online (Sandbox Code Playgroud)
因为你得到了地址字节.