Ip地址转32位整数 和 32位整数转化对应的IP地址

一:解题思路

举例:一个ip地址为10.0.3.193 转化后的整数为:167773121

二:完整代码示例 (C++版和Java版)

Ip地址转化为整数 C++代码:

int ipToInt(string s)
{
    int ret = 0;
    int num = 0;

    for (int i = 0; i < s.size(); i++)
    {
        if (s[i] != '.')
        {
            num = num * 10 + (s[i]-'0');
        }
        else
        {
            ret <<= 8;
            ret += num;
            num = 0;
        }
    }
    ret <<= 8;
    ret += num;

    return ret;
}

 整数转化为IP地址:

string intToIp(uint32_t num)
{

    string strRet = "";
    for (int i = 0; i < 4; i++)
    {
        uint32_t tmp = (num >> ((3 - i) * 8)) & 0xFF;

        char chBuf[8] = "";
        _itoa_s(tmp, chBuf, 10);
        strRet += chBuf;

        if (i < 3)
        {
            strRet += ".";
        }
    }

    return strRet;
}

 

posted @ 2020-08-16 11:47  repinkply  阅读(2351)  评论(0)    收藏  举报