gpt4 book ai didi

IP地址/子网掩码(点十进制)的golang CIDR前缀表示法

转载 作者:IT王子 更新时间:2023-10-29 01:54:20 26 4
gpt4 key购买 nike

在 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中找不到

最佳答案

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 掩码,这会引起 panic 。

关于IP地址/子网掩码(点十进制)的golang CIDR前缀表示法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46063228/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com