-2

在Go中,我找到了这样的算法,但我不明白,谁能帮我解释一下,谢谢!

func networkSize(mask net.IPMask) int32 {
    m := net.IPv4Mask(0, 0, 0, 0)
    for i := 0; i < net.IPv4len; i++ {
        m[i] = ^mask[i]
    }

    return int32(binary.BigEndian.Uint32(m)) + 1
}
4

2 回答 2

1

反转网络掩码中的每一位,将结果视为 bigendian 32 位整数的 4 个字节,并将结果加 1。所以 255.255.252.0 => 00000000.00000000.00000011.11111111 => 1023,加 1 就是 1024。

于 2013-10-22T11:02:04.117 回答
0

ip 地址是逻辑的,并带有子网掩码。子网掩码可用于分割出许多 net_id。在此处阅读示例:http ://www.garykessler.net/library/subnet_masks.html 。

于 2013-10-22T10:38:41.033 回答