我用这个字符串表示hex:
000万美元
我想用网络包转换成IPv6
我期待的结果是(big endian):
20a:600::9:快00:快00:
我试过这个:
ip := "00000000ff00ff00000900000600020a"
res := make(net.IP, net.IPv6len)
var err error
res,err = hex.DecodeString(ip)
if err != nil {
fmt.Println("error")
}
for i := 0; i < 16/2; i++ {
res[i], res[16-1-i] = res[16-1-i], res[i]
}
fmt.Println(res.String())
但我得到了这个
a02:6:0:900:开始日期:开始日期:
谢谢!
2条答案
按热度按时间gopyfrb31#
你的问题不清楚在比较时什么被反转了。通常,在切换字节序时,你反转了字节,但这似乎不是你在这里想要的。
在任何情况下,以下代码都可以使用IPAddress Go library以多种不同的方式进行反转。免责声明:我是项目经理。
输出:
出于某种原因,它是反转每个段中的字节,以获得您所期望的结果,尽管这不是切换字节序。
vybvopom2#
试试这个:
字节是成对的,因此您需要同时翻转两个字节