在golang中是否有与“ npm netmask ”类似的内容?我需要将10.0.0.0/ 8 转换为10.0.0.0/ 255.0.0.0 ,因此基本上CIDR格式的网络掩码为点小数。
var Netmask = require('netmask').Netmask
var block = new Netmask('10.0.0.0/8');
block.mask; // 255.0.0.0
我在/golang.org/src/net/ip.go
中找不到它答案 0 :(得分:4)
go标准库没有创建该表示的功能。话虽这么说,自己也不难:
https://play.golang.org/p/XT_UXoy6ra
func main() {
_, ipv4Net, err := net.ParseCIDR("10.0.0.0/8")
if err != nil {
log.Fatal(err)
}
fmt.Println(ipv4MaskString(ipv4Net.Mask))
}
func ipv4MaskString(m []byte) string {
if len(m) != 4 {
panic("ipv4Mask: len must be 4 bytes")
}
return fmt.Sprintf("%d.%d.%d.%d", m[0], m[1], m[2], m[3])
}
请记住,此格式仅适用于ipv4掩码。如果你要传递一个ipv6面具,这会让人感到恐慌。