golang:将IPv4和IPv6地址从文本转换为二进制形式

时间:2019-04-16 02:13:43

标签: go

希望以4个字节发送一个ipv4地址,以16个字节发送一个ipv6地址-类似于inet_pton()呢?

handleDescChange = text => {
    if (!text) return;
    this.setState({ projectDescription: text });
  };

我知道https://play.golang.org/p/jn8t7zJzT5v -尽管对于IPV6地址来说看起来很复杂。

谢谢!

2 个答案:

答案 0 :(得分:7)

net.ParseIP()将采用IPv4或IPv6格式的字符串,并返回包含IP地址的net.IP

net.IP是您需要馈送给大多数其他Go功能的工具,例如建立与主机的连接。

请注意,与大多数返回错误的Go函数不同,net.ParseIP()仅在无法将字符串解析为IP地址时才返回nil

https://play.golang.org/p/Cgsrgth7JKY

答案 1 :(得分:0)

您都可以使用net软件包: `

a := net.ParseIP("127.0.0.1")
fmt.Printf("%b %s", net.IP.To4(a))

` https://play.golang.org/p/KzqYpk9OBh8

或者,您可以拆分IP,然后使用strconv.Atoi()将每个值转换为整数,然后将每个整数转换为byte()

`

ipString := "127.0.0.1"

octets := strings.Split(ipString, ".")

octet0, _ := strconv.Atoi(octets[0])
octet1, _ := strconv.Atoi(octets[1])
octet2, _ := strconv.Atoi(octets[2])
octet3, _ := strconv.Atoi(octets[3])

b := [4]byte{byte(octet0),byte(octet1),byte(octet2),byte(octet3)}

fmt.Printf("%s has 4-byte representation of %b\n", ipString, b)

` https://play.golang.org/p/2F3bC0df9wB