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表示法中的整数)
答案 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