我想使用按位运算将 /24 之类的前缀转换为 255.255.255.0。
我试过像这样使用 unsigned int :
unsigned int mask = -(1 << 32 - prefix);
我正在考虑创建一个 while 循环,将 1 添加到正确的位置,然后递减到 0。
所有帮助将不胜感激!
我想使用按位运算将 /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);
你有没有尝试过?
#include <stdint.h>
uint32_t mask = (-1) << (32 - prefix);
一旦 -1 是 2-补码表示法中的 0xFFFFFFFF,它就可以工作