ip地址互转十进制数字函数

原IP:192.168.32.1

转换为16进制:192->c0 168->a8 32->20 1->01

16进制结果:c0 a8 20 01

将16进制结果组合转换为10进制

10进制结果:3232243713

原IP ping

现IP转10进制ping

切记:得到的十进制数与 inet_addr(127.0.0.1) 函数得到的数据不一样,原因 inet_addr 函数得到的16进制做了大小端导致。

C/C++函数(IP地址转十进制)

#include <stdio.h>

unsigned int utils_inet_addr(unsigned char one,unsigned char two,unsigned char three,unsigned char four)
{
    unsigned long ip = 0;

    ip |= (one << 24);
    ip |= (two << 16);
    ip |= (three << 8);
    ip |= (four << 0);
    return HTONL(ip);
}

int main()
{
    unsigned int a = utils_inet_addr(127,1);
    printf ("%d\n",a);

    return 0;
}

C/C++函数(十进制转IP地址)

#include <stdio.h>
#include <stdint.h>

typedef uint32_t ipv4_t;


void ipv4_to_str(char *addr_str,ipv4_t ipv4_addr)
{
    sprintf(addr_str,"%d.%d.%d.%d",ipv4_addr & 0xFF,(ipv4_addr >> 8) & 0xFF,(ipv4_addr >> 16) & 0xFF,(ipv4_addr >> 24) & 0xFF);
//    (ipv4_addr >> 24) & 0xFF,//    (ipv4_addr >> 16) & 0xFF,//    (ipv4_addr >> 8) & 0xFF,//    ipv4_addr & 0xFF);
}

int main()
{
    char addr_str[256] = {0};
    ipv4_to_str(addr_str,1711384768);
    printf("%s\n",addr_str);
    return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐