我可以在 C 中使用 int 类型作为 IP 地址的网络掩码吗?

标签 c ip bitwise-operators netmask

我需要将 IP 地址与其子网掩码进行“AND”运算。 IP 地址是十六进制数,子网掩码是 0 - 32 之间的数字(不是 0)。

4a21bd6e/25

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

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

最佳答案

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

Arithmetic bit-shift on a signed integer

关于我可以在 C 中使用 int 类型作为 IP 地址的网络掩码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26327609/

相关文章:

无法弄清楚答案是如何得出的

c - 在 gcc 中出现错误但仍然成功运行

c - Doxygen 有没有办法在函数原型(prototype)中使用宏?

php - 优先级和位掩码操作

c - "ans += n << count"是什么意思?

c - 如何将二进制数组转换为单个变量?

networking - 最容易记住的可公开 ping 的 IP 地址是什么?

sockets - (建议): Libraries for packet crafting,捕获和分析

php - 在存储之前加密用户的 IP 地址

c - 以 ascii 形式打印十六进制数组