我想使用按位运算将/ 24之类的前缀转换为255.255.255.0。
我尝试过像这样使用unsigned int:
unsigned int mask = -(1 << 32 - prefix);
我正在考虑创建一个while循环,它将1添加到正确的位置,然后递减为0.
所有帮助将不胜感激!
答案 0 :(得分:3)
使用
unsigned long mask = (0xFFFFFFFF << (32 - prefix)) & 0xFFFFFFFF;
printf("%lu.%lu.%lu.%lu\n", mask >> 24, (mask >> 16) & 0xFF, (mask >> 8) & 0xFF, mask & 0xFF);
答案 1 :(得分:1)
你试过吗?
#include <stdint.h>
uint32_t mask = (-1) << (32 - prefix);
一旦-1为0补充表示法中的0xFFFFFFFF,它就完成了工作