1

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

我试过像这样使用 unsigned int :

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

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

所有帮助将不胜感激!

4

2 回答 2

4

利用

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

printf("%lu.%lu.%lu.%lu\n", mask >> 24, (mask >> 16) & 0xFF, (mask >> 8) & 0xFF, mask & 0xFF);
于 2013-04-18T01:46:26.683 回答
1

你有没有尝试过?

#include <stdint.h>
uint32_t mask = (-1) << (32 - prefix);

一旦 -1 是 2-补码表示法中的 0xFFFFFFFF,它就可以工作

于 2013-04-18T01:41:21.637 回答