检查IP八进制数是否不以127/224或255开始

时间:2018-07-06 14:34:08

标签: c++ ip

我有一个IP存储在uint32_t类型变量中:

u32int_t ip = 4289172904;

我需要确定第一个八位位组或IP是否不是以 127/224和225 地址开头的。

我不确定该如何实现?

2 个答案:

答案 0 :(得分:2)

这取决于您所说的第一个八位位组

uint8_t octet = ip & 0xff;

uint8_t octet = (ip >> 24);

第一个解决方案的说明:

uint32_t在32位上

0xff00000000 00000000 00000000 11111111的二进制文件

因此,ip & 0xff将屏蔽所有不是来自最低字节的位

答案 1 :(得分:2)

没有有关npm run dev语义的详细信息。请注意,您的主机字节顺序(字节序模式)可能与网络字节顺序不同。如有必要,使用uint32_t ip转换为网络字节顺序,然后使用按位运算符检查最高字节,例如htonl(ip)可以获取第一个八位位组,然后将其与您的127/244/255等进行比较。