问题描述
我有这个代表十六进制的字符串:
00000000ff00ff00000900000600020a
我正在尝试使用网络包将其转换为 IPv6
我期待的结果是(大端):
20a:600::9:ff00:ff00::
我试过了:
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:ff:ff::
谢谢!
解决方法
试试这个:
for i := 0; i < 16/2; i += 2 {
res[i],res[16-2-i] = res[16-2-i],res[i]
res[i+1],res[16-1-i] = res[16-1-i],res[i+1]
}
字节是成对的,所以你需要同时翻转两个