原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] 举报,一经查实,本站将立刻删除。