c - 如何用C语言获取IP地址的位值?

标签 c

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

相关文章:

c - 使用 long long integer 存储 32 位指针导致 printf 出错

c - 警告 : format '%c' expects argument of type 'char *' , 但参数 3 的类型为 'int'

c - 是否可以只在存储端使用内存屏障

c - 分发可加载的内置 bash 模块

c - 之前存储的字符串会被 fget 覆盖

c - lua 函数的警报消息

c - C语言程序求最小的三个数

c - 使用 C 中的套接字通过多个客户端传输文件时出现格式错误

c - 指向动态二维字符数组的三重指针的内存分配

c - 多重测试 scanf 结果 - C