我需要在 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/