Go 从maxAddress开始的IP地址
我需要开始生成IP地址 给定一个CIDR和一些缓存地址。 我这里有一些代码,我在做字节。与存储的比较 地址并仅选择那些更大的 这里出了什么问题?基本上我需要所有的地址 从“62.76.47.12/28”中的“62.76.47.9”开始。生成IP 在给定的CIDR范围内,这是众所周知的Go 从maxAddress开始的IP地址,go,Go,我需要开始生成IP地址 给定一个CIDR和一些缓存地址。 我这里有一些代码,我在做字节。与存储的比较 地址并仅选择那些更大的 这里出了什么问题?基本上我需要所有的地址 从“62.76.47.12/28”中的“62.76.47.9”开始。生成IP 在给定的CIDR范围内,这是众所周知的 谢谢。如果您打印ìpMax,您将看到它的底层表示使用了16个字节。(另见 您可以将ipMax转换为IPv4表示形式,以获得所需的结果: ipMax := net.ParseIP("62.76.47.9").To4
谢谢。如果您打印
ìpMax
,您将看到它的底层表示使用了16个字节。(另见
您可以将ipMax
转换为IPv4表示形式,以获得所需的结果:
ipMax := net.ParseIP("62.76.47.9").To4()
此示例将打印从62.76.47.12/28的第一个地址到62.76.47.9的地址 游乐场:
主程序包
进口(
“fmt”
“净额”
)
func main(){
cidr:=“62.76.47.12/28”
_,ipnet,u3;:=net.ParseCIDR(cidr)
ipFirst:=ipnet.IP
ipFirstValue:=toHost(ipFirst)
ipLast:=净解析IP(“62.76.47.9”)
ipLastValue:=toHost(ipLast)
fmt.Println(“cidr:,cidr)
fmt.Println(“第一:”,ipFirst)
fmt.Println(“最后:”,ipLast)
如果ipLastValue
ipMax := net.ParseIP("62.76.47.9").To4()
package main
import (
"fmt"
"net"
)
func main() {
cidr := "62.76.47.12/28"
_, ipnet, _ := net.ParseCIDR(cidr)
ipFirst := ipnet.IP
ipFirstValue := toHost(ipFirst)
ipLast := net.ParseIP("62.76.47.9")
ipLastValue := toHost(ipLast)
fmt.Println("cidr: ", cidr)
fmt.Println("first: ", ipFirst)
fmt.Println("last: ", ipLast)
if ipLastValue < ipFirstValue {
fmt.Println("ugh")
return
}
for i := ipFirstValue; i < ipLastValue; i++ {
addr := toIP(i)
fmt.Println(addr)
}
}
func toHost(ip net.IP) uint32 {
i := ip.To4()
return uint32(i[0])<<24 + uint32(i[1])<<16 + uint32(i[2])<<8 + uint32(i[3])
}
func toIP(v uint32) net.IP {
v3 := byte(v & 0xFF)
v2 := byte((v >> 8) & 0xFF)
v1 := byte((v >> 16) & 0xFF)
v0 := byte((v >> 24) & 0xFF)
return net.IPv4(v0, v1, v2, v3)
}