Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 从maxAddress开始的IP地址_Go - Fatal编程技术网

Go 从maxAddress开始的IP地址

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

我需要开始生成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()

此示例将打印从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)
}