用C转换子网掩码前缀

标签 c ip-address bitwise-operators

我想使用按位运算将/24 之类的前缀转换为 255.255.255.0。

我试过像这样使用 unsigned int:

unsigned int mask = -(1 << 32 - prefix);

我正在考虑创建一个 while 循环,将 1 加到正确的位置,然后递减到 0。

所有帮助将不胜感激!

最佳答案

使用

unsigned long mask = (0xFFFFFFFF << (32 - prefix)) & 0xFFFFFFFF;

printf("%lu.%lu.%lu.%lu\n", mask >> 24, (mask >> 16) & 0xFF, (mask >> 8) & 0xFF, mask & 0xFF);

关于用C转换子网掩码前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16072967/

相关文章:

android - 如何从代码中获取设备的IP地址?

javascript - Firefox 扩展中的 IP 地址查找

c - 如何在没有 * 或 - 运算符的情况下否定 C 中的正整数?

c - MSVC 中函数的大小

c++ - 执行顺序

使用 ULPOSC32K 在 Atmel SAM L21 Xplained Pro 中配置 RTC - 频率错误

php - 无法从托管在 GODADDY 上的站点获取机器的本地 IP 地址

python - 不使用算术运算符计算 xxy

javascript - 为什么我会收到此错误?未捕获的类型错误: state.removeFlag不是函数

c - 通过信号中断两个阻塞线程