linux中是否有任何函数以125.22.47.125格式显示值7d162f7d,即以标准ip格式转换十六进制ip地址
答案 0 :(得分:7)
您可以使用以下内容:
#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
答案 1 :(得分:3)
用于此目的的正确功能是
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));