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

10-15 16:40