如何解决将表示十六进制数的字符串转换为 ipv6
我有这个代表十六进制的字符串:
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]
}
字节是成对的,所以你需要同时翻转两个
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。