首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将ip的十六进制值转换为标准格式

问将ip的十六进制值转换为标准格式
EN

Stack Overflow用户
提问于 2010-08-23 15:11:28
回答 2查看 1.7K关注 0票数 1

linux中是否有以125.22.47.125格式显示值7d162f7d的功能,即将十六进制ip地址转换为其标准ip格式

EN

回答 2

Stack Overflow用户

发布于 2010-08-23 15:16:54

你可以使用类似这样的东西:

代码语言:javascript
复制
#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;
}

这会产生:

代码语言:javascript
复制
125.22.47.125
票数 7
EN

Stack Overflow用户

发布于 2010-08-23 15:49:21

用于此目的的正确函数是

inet_ntop -将IPv4和IPv6地址从二进制转换为文本格式

在您的示例中,由于您似乎引用的是IPv4地址,因此您必须创建一个struct in_addr,类似于

代码语言:javascript
复制
 struct in_addr addr = { .s_addr = YOURVALUE };

然后你就得这样叫它

代码语言:javascript
复制
char addrstr[16] = { 0 };

inet_ntop(AF_INET, &addr, addrstr, sizeof(struct in_addr));
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3545390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档