ip字符转换为数字 2024-08-28 默认分类 暂无评论 121 次阅读 > 我们平时使用的ip地址都是通过 0~255的数通过 "点号." 进行连接 直接通过字符串来存储 会存在空间浪费 区间查找性能不佳 一般更好的做法是将其存储为32位二进制数值 对应的十进制数 ``` Go package main import ( "fmt" "strconv" "strings" ) /* 将ip转换为数字类型存储 0~255 => 可以用 8个二进制位表示 每一个IP段 都可以通过8个二进制位表示 一整个ip 可以通过32bit来表示 002 => 0000 0010 255 => 1111 1111 001 => 0000 0001 040 => 0001 0010 即 002.255.001.040 为 0000 0010 | 1111 1111 | 0000 0001 | 0001 0010 转换为 十进制 为 */ func ipToNum(ip string) int { ipNum := 0 nArr := strings.Split(ip, ".") for i := len(nArr) - 1; i >= 0; i-- { ipN, _ := strconv.Atoi(nArr[i]) ipNum = ipNum + ipN<<(i*8) } return ipNum } func main() { ipList := []string{ "2.255.1.40", } for _, ip := range ipList { ipNum := ipToNum(ip) fmt.Printf("%s - %d", ip, ipNum) } } ``` 标签: 数据库, Go 转载请注明文章来源 本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
评论已关闭