版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/glw0223/article/details/88787197
unsigned int 转 char*
union ip_t
{
unsigned int ipi;
struct ip_byte
{
unsigned char byte[4];
} ipb;
};
//本机字节序转char*
//这里认为本机是小端
char* ip2str_internal(unsigned int host_order_ip, char *str, size_t sz)
{
union ip_t my_ip;
my_ip.ipi = host_order_ip;
memset(str, 0, sz);
snprintf(str, sz, "%u.%u.%u.%u",
(unsigned int)my_ip.ipb.byte[3],
(unsigned int)my_ip.ipb.byte[2],
(unsigned int)my_ip.ipb.byte[1],
(unsigned int)my_ip.ipb.byte[0]);
return str;
}
const char* ip2str(unsigned int host_order_ip)
{
static char buf[128];
memset(buf, 0, sizeof(buf));
ip2str_internal(host_order_ip, buf, sizeof(buf));
return buf;
}
//这里是网络字节序,大端
char* ip2str_net_order_internal(unsigned int network_order_ip, char *str, size_t sz)
{
union ip_t my_ip;
my_ip.ipi = network_order_ip;
memset(str, 0, sz);
snprintf(str, sz, "%u.%u.%u.%u",
(unsigned int)my_ip.ipb.byte[0],
(unsigned int)my_ip.ipb.byte[1],
(unsigned int)my_ip.ipb.byte[2],
(unsigned int)my_ip.ipb.byte[3]);
return str;
}
const char* ip2str_net_order(unsigned int network_order_ip)
{
static char buf[128];
ip2str_net_order_internal(network_order_ip, buf, sizeof(buf));
return buf;
}
char* 转 unsigned int
//ip转unsigned int
int ipstr2ip(const char *ip, unsigned int *result)
{
if (NULL == result)
return -1;
unsigned int ret;
ret = inet_addr(ip);
if (INADDR_NONE != ret) {
*result = ntohl(ret);
return 0;
}
return -1;
}