在go语言中将IPv6的地址转换为整数或十进制数字代码示例

2023-06-01 00:00:00 示例 转换为 整数

在go项目中怎么把字符串格式的IPv6地址转换为整数?

注意:

十进制数字格式的IP地址更容易搜索、过滤或比较。

例如,在一个给定的范围内搜索IP地址。


解决方法:

使用math/big.Int.SetBytes()将IPv6地址转换为有符号的多精度整数。


示例代码:

package main

 import (
         "fmt"
         "math/big"
         "net"
 )
 
 func IP6toInt(IPv6Address net.IP) *big.Int {
         IPv6Int := big.NewInt(0)
         // from http://golang.org/pkg/net/#pkg-constants
         // IPv6len = 16
         IPv6Int.SetBytes(IPv6Address.To16())  
         return IPv6Int
 }
 
 func main() {
         ipv6Decimal := IP6toInt(net.ParseIP("FE80::0202:B3FF:FE1E:8329"))
         fmt.Println(ipv6Decimal)
 }

输出 :

338288524927261089654163772891438416681

相关文章