Golang:IP掩码的位数

时间:2014-01-07 12:41:41

标签: go ip-address

在Go中,如何获取IP掩码的位数,如下所示:10.100.20.0 255.255.255.0 => 24位maks。

检查掩码是低于还是大于某个位数(如果有人想要阻止所有大于/ 24的地址)会很有帮助。

1 个答案:

答案 0 :(得分:10)

net包具有获取掩码前缀大小的函数,CIDR notation中使用的值。这些位的具体功能是:

func (m IPMask) Size() (ones, bits int)

要获取这些位,请参阅以下示例:

package main

import (
    "fmt"
    "net"
)

func main() {
    mask := net.IPMask(net.ParseIP("255.255.255.0").To4()) // If you have the mask as a string
    //mask := net.IPv4Mask(255,255,255,0) // If you have the mask as 4 integer values

    prefixSize, _ := mask.Size()
    fmt.Println(prefixSize)
}

<强>输出:

24

Playground

<强>聚苯乙烯。

我假设您的意思是位掩码255.255.255.0