ip的十六进制值为标准格式

时间:2010-08-23 07:11:28

标签: c linux posix

linux中是否有任何函数以125.22.47.125格式显示值7d162f7d,即以标准ip格式转换十六进制ip地址

2 个答案:

答案 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));