大佬教程收集整理的这篇文章主要介绍了Go语言把IP转为int存储.节省空间提高索引速度,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
package main import ( "errors" "fmt" "strconv" "@R_673_10495@ngs" ) type intIP struct { IP @R_673_10495@ng Intip int } func main() { var x *IntIP = &IntIP{IP: "192.168.1.1"} fmt.Println(X) x.ToIntIp() fmt.Println(*X) } func (self *IntIp) @R_673_10495@ng() @R_673_10495@ng { return self.IP } func (self *IntIp) ToIntIp() (int,error) { Intip,err := ConvertToIntIP(self.Ip) if err != nil { return 0,err } self.Intip = Intip return Intip,nil } func (self *IntIp) To@R_673_10495@ng() (@R_673_10495@ng,error) { i4 := self.Intip & 255 i3 := self.Intip >> 8 & 255 i2 := self.Intip >> 16 & 255 i1 := self.Intip >> 24 & 255 if i1 > 255 || i2 > 255 || i3 > 255 || i4 > 255 { return "",errors.New("Isn't a IntIP Type.") } ip@R_673_10495@ng := fmt.Sprintf("%d.%d.%d.%d",i4,i3,i2,i1) self.IP = ip@R_673_10495@ng return ip@R_673_10495@ng,nil } func ConvertToIntIP(ip @R_673_10495@ng) (int,error) { ips := @R_673_10495@ngs.Split(ip,".") E := errors.New("Not A IP.") if len(ips) != 4 { return 0,E } var intIP int for k,v := range ips { i,err := strconv.Atoi(v) if err != nil || i > 255 { return 0,E } intIP = intIP | i<<uint(8*(3-k)) } return intIP,nil }
以上是大佬教程为你收集整理的Go语言把IP转为int存储.节省空间提高索引速度全部内容,希望文章能够帮你解决Go语言把IP转为int存储.节省空间提高索引速度所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。