inet_netof()函数返回奇怪的值

时间:2015-08-24 02:27:44

标签: c sockets networking

        addr4 = &((struct sockaddr_in *)ifa->ifa_netmask)->sin_addr;
        internal_addr = inet_netof(*addr4);
        printf("IPv4 MASK %08x \n",internal_addr);

我有上面的代码。它正在打印IPv4 MASK

IPv4 MASK 00ffffff 

我假设这代表255.255.255.0。这是正确的假设吗? 我想将其转换为24(CIDR表示法中的整数)

2 个答案:

答案 0 :(得分:2)

根据您希望将其转换为掩码位数(CIDR表示法),只需计算掩码中一位的数量。

只需循环遍历32位无符号整数(0x00ffffff),检查它是否大于0,如果大于0则将1添加到答案中,然后将无符号整数除以2(或将它向右移1位。

答案 1 :(得分:1)

IPv4 MASK 00ffffff 
  

我假设这代表255.255.255.0。这是正确的假设吗?

这是对的。 网络字节顺序中的00ffffff变为0xff 0xff 0xff 0x00,在255.255.255.0中变为dot notation