0

我需要“与”一个 IP 地址及其子网掩码。IP 地址是一个十六进制数字,子网掩码是一个介于 0 - 32 之间的数字(不是 0)。

4a21bd6e/25

我可以使用下面的代码“与”这两个变量以获得 IP 地址的最高有效 25 位吗?

uint32_t IP = 4a21bd6e;
uint8_t netmask = 25;
int mask = 0x80000000;
uint32_t results = IP & (mask  >> (netmask - 1));
4

2 回答 2

1

答案可能是- 如果您的编译器/处理器选择是:

有符号整数的算术位移

于 2014-10-12T17:04:27.583 回答
0

为什么不像 IP 那样使用 uint32_t 呢?您假设 int 是 4 个字节,但情况并非总是如此。通常最好使用标准类型,因为它更便携,而且不是特定于架构的。

于 2016-03-17T03:53:11.223 回答