我需要在C中输出IP地址的32位值(示例IP地址:208.40.244.65)。不知道这是什么意思,或者怎么做?
最佳答案
假设IPv4,
const char* ip_addr_str = "208.40.244.65"; // In hex, D0.28.F4.41
uint32_t ip_addr_num;
inet_aton(ip_addr_str, (struct in_addr*)&ip_addr_num);
上面的内容完全按照在IP数据包中的查找方式复制了字节,因此结果因计算机而异。你要么得到
0xD028F441 // Big-endian machines
要么
0x41F428D0 // Little-endian machines
遵循以下内容将其标准化为
0xD028F441
:ip_addr_num = ntohl(ip_addr_num);
注意:我认为
inet_aton
实际上接受域以及IP地址。关于c - 如何在C中获取IP地址的位值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45022907/