ip与int之间的转换

发布时间 2023-12-12 15:26:41作者: 94那抹微笑

ip -> int

// -- ip 转 int
int ip2int(string ipStr, int & ipInt)
{
    int retval = -1, tokenInt = 0, i = 3;;
    char * token = NULL;
    vector<string> str_arr, str_tmp;

    ipInt = 0;

    if(ipStr.empty()){
        printf("---> ipStr is empty in ip2int, error...\n");
        goto DONE;
    }

    str_arr = split(ipStr, ".");
    
    for(i = 0; i < str_arr.size(); ++i){
        sscanf(str_arr[i].c_str(), "%d", &(tokenInt));
        ipInt += tokenInt * pow(256, i);
    }

    retval = 0;
DONE:
    return retval;
}

 

int -> ip

__inline__ static char * __get_ip(char * buffer, unsigned int ip)
{
    unsigned char * ptr = (unsigned char *)&ip;
 
#ifdef WIN32
    _snprintf(buffer, 16, "%d.%d.%d.%d", (unsigned int)ptr[0], (unsigned int)ptr[1], (unsigned int)ptr[2], (unsigned int)ptr[3]);
#else
    snprintf(buffer, 16, "%d.%d.%d.%d", (unsigned int)ptr[0], (unsigned int)ptr[1], (unsigned int)ptr[2], (unsigned int)ptr[3]);
#endif
    
    buffer[15] = 0;
    return buffer;
}