我有以下代码,它比inet_addr快约7倍。我想知道是否有办法改进它以使其更快,或者是否存在更快的替代方案。
这段代码要求提供一个有效的,以空值终止的IPv4地址,且不带空格,在我看来,这总是这样,因此我针对这种情况进行了优化。通常,您会进行更多的错误检查,但是如果有一种方法可以使以下操作更快,或者存在更快的替代方法,我将不胜感激。
UINT32 GetIP(const char *p)
{
UINT32 dwIP=0,dwIP_Part=0;
while(true)
{
if(p[0] == 0)
{
dwIP = (dwIP << 8) | dwIP_Part;
break;
}
if(p[0]=='.')
{
dwIP = (dwIP << 8) | dwIP_Part;
dwIP_Part = 0;
p++;
}
dwIP_Part = (dwIP_Part*10)+(p[0]-'0');
p++;
}
return dwIP;
}
相关分类