在Go中将网络掩码转换为CIDR
我正在寻找一种在Go中将网络掩码字符串转换为CIDR符号的方法 例如,“255.255.255.0”->“/24” 我目前正在使用下面的逻辑获取一个IP地址和网络掩码字符串,这可能会使事情变得复杂 我一直在阅读在Go中将网络掩码转换为CIDR,go,Go,我正在寻找一种在Go中将网络掩码字符串转换为CIDR符号的方法 例如,“255.255.255.0”->“/24” 我目前正在使用下面的逻辑获取一个IP地址和网络掩码字符串,这可能会使事情变得复杂 我一直在阅读net库,试图看看是否有一个不同的函数可以用来实现我想要的功能,这实际上只是CIDR表示法中的一个IP地址: 192.168.1.2/24 这一点一开始并不明显,但: addr := ip.To4() sz, _ := net.IPV4Mask(addr[0], addr[1], add
net
库,试图看看是否有一个不同的函数可以用来实现我想要的功能,这实际上只是CIDR表示法中的一个IP地址:
192.168.1.2/24
这一点一开始并不明显,但:
addr := ip.To4()
sz, _ := net.IPV4Mask(addr[0], addr[1], addr[2], addr[3]).Size()
我不知道这样的函数是否存在,但创建这样的函数很容易 CIDR表示法只是网络掩码中的设置位计数 因此,粗溶液可以是:
func-cidr(网络掩码字符串)int{
var掩码uint32
对于idx,点部分:=范围字符串.Split(网络掩码“.”){
部分:=strconv.Atoi(dotpart)
mask=mask | uint32(part)“IPV4Mask”应该是“IPV4Mask”,小写字母v。难道你不能像这样使用转换():sz,:=net.IPMask(ip.To4()).Size()
?
addr := ip.To4()
sz, _ := net.IPV4Mask(addr[0], addr[1], addr[2], addr[3]).Size()