关于子网掩码的校验(subnet mask)

来源:互联网 发布:聊天软件编程 编辑:程序博客网 时间:2024/04/28 15:41
//C++
BOOL IsSubnetMask(char* subnet){    unsigned int b = 0, i, n[4];    sscanf(subnet, "%u.%u.%u.%u", &n[3], &n[2], &n[1], &n[0]);    for(i = 0; i < 4; ++i) //将子网掩码存入位无符号整型        b += n[i] << (i * 8);     b = ~b + 1;    if((b & (b - 1)) == 0)   //判断是否为^n        return TRUE;elsereturn FALSE;   }

详细见http://hi.baidu.com/roovent/blog/item/e342a423e33f0eaf4623e8b3.html