猿问

从字符串获取IPv4地址的最快方法

我有以下代码,它比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;

}


肥皂起泡泡
浏览 713回答 3
3回答
随时随地看视频慕课网APP
我要回答