【问题标题】:Generate subnet mask (uint32_t or s_addr) from the mask length (for ipv4 and ipv6 addresses)从掩码长度生成子网掩码(uint32_t 或 s_addr)(用于 ipv4 和 ipv6 地址)
【发布时间】:2020-09-05 13:00:13
【问题描述】:

我有我的 ipv4 和 ipv6 地址的输入列表,这些地址是子网划分的。我想以s_addruint_32_t 的形式找到它们的子网掩码,以便我可以检查给定的IP 地址是否属于IP 地址的输入列表。 那么当我们遇到 IP 地址(比如 156.67.154.0/24)时,我们如何生成子网掩码(比如 255.255.255.0)呢?

我试过了:

uint32_t subnet_mask=0xFFFFFFFFU & -(1U << (32 - prefix))

但上述方法给出:0.255.255.255

【问题讨论】:

    标签: c ip-address mask subnet


    【解决方案1】:

    试试(1U &lt;&lt; (32 - prefix)) - 1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-08
      • 1970-01-01
      • 2012-05-17
      • 2016-02-19
      • 1970-01-01
      • 2021-01-28
      • 1970-01-01
      • 2013-06-11
      相关资源
      最近更新 更多