linux中是否有以125.22.47.125格式显示值7d162f7d的功能,即将十六进制ip地址转换为其标准ip格式
发布于 2010-08-23 15:16:54
你可以使用类似这样的东西:
#include <stdio.h>
static char *ipToStr (unsigned int ip, char *buffer) {
sprintf (buffer, "%d.%d.%d.%d", ip >> 24, (ip >> 16) & 0xff,
(ip >> 8) & 0xff, ip & 0xff);
return buffer;
}
int main (void) {
char buff[16];
printf ("%s\n", ipToStr (0x7d162f7dU, buff));
return 0;
}这会产生:
125.22.47.125发布于 2010-08-23 15:49:21
用于此目的的正确函数是
inet_ntop -将IPv4和IPv6地址从二进制转换为文本格式
在您的示例中,由于您似乎引用的是IPv4地址,因此您必须创建一个struct in_addr,类似于
struct in_addr addr = { .s_addr = YOURVALUE };然后你就得这样叫它
char addrstr[16] = { 0 };
inet_ntop(AF_INET, &addr, addrstr, sizeof(struct in_addr));https://stackoverflow.com/questions/3545390
复制相似问题