代码之家  ›  专栏  ›  技术社区  ›  Ashish

如何计算C中的IP地址和子网掩码的操作?

  •  1
  • Ashish  · 技术社区  · 15 年前

    我有一个IP地址和子网掩码,都是无符号长的;我如何能和这两者一起检查我的传入IP地址(IP2)是否属于同一个子网?

    像:

    if (ip1 & subnet == ip2 & subnet)
        then same subnet.  
    
    2 回复  |  直到 15 年前
        1
  •  2
  •   Jonathan Leffler    15 年前

    使用括号-优先级混淆:

    if ((ip1 & subnet) == (ip2 & subnet))
        ...
    

    原始代码实际上与以下代码相同:

    if (ip1 & (subnet == ip2) & subnet)
        ...
    
        2
  •  1
  •   filofel    15 年前

    就像你做的那样:

    if ((ip1 & subnet) == (ip2 & subnet))
      printf("same subnet 0%x", subnet);
    

    (只需添加()以确保按正确顺序进行计算)。

    推荐文章