如何在C中计算IP地址和子网掩码的AND运算?

发布于 2024-08-22 06:39:57 字数 180 浏览 16 评论 0原文

我有一个 IP 地址和子网掩码,均为 unsigned long;我如何与这两者并检查我的传入 ip 地址 (ip2) 是否属于同一子网?

喜欢:

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

I have an IPaddress and subnet mask, both in unsigned long; how can I AND both of these and check whether my incoming ipaddress (ip2) belongs to the same subnet or not?

like:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

写给空气的情书 2024-08-29 06:39:57

使用括号 - 优先级令人困惑:

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

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

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

Use parentheses - the precedence levels are confusing:

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

The original code was effectively the same as:

if (ip1 & (subnet == ip2) & subnet)
    ...
九歌凝 2024-08-29 06:39:57

就像您所做的那样:(

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

只需添加 () 以确保计算以正确的顺序完成)。

Just like you did it:

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

(just added the () to insure the computation is done in the right order).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文