package converter import ( "net" "strconv" "strings" ) func IP4toInt(IPv4Addr net.IP) int64 { return StrToInt(IPv4Addr.String()) } func StrToInt(strIp string) int64 { bits := strings.Split(strIp, ".") b0, _ := strconv.Atoi(bits[0]) b1, _ := strconv.Atoi(bits[1]) b2, _ := strconv.Atoi(bits[2]) b3, _ := strconv.Atoi(bits[3]) var sum int64 // left shifting 24,16,8,0 and bitwise OR sum += int64(b0) << 24 sum += int64(b1) << 16 sum += int64(b2) << 8 sum += int64(b3) return sum } func IntToIP4(ipInt int64) net.IP { //return b0 + "." + b1 + "." + b2 + "." + b3 return net.ParseIP(IntToStr(ipInt)) } func IntToStr(ipInt int64) string { b0 := strconv.FormatInt((ipInt>>24)&0xff, 10) b1 := strconv.FormatInt((ipInt>>16)&0xff, 10) b2 := strconv.FormatInt((ipInt>>8)&0xff, 10) b3 := strconv.FormatInt((ipInt & 0xff), 10) return b0 + "." + b1 + "." + b2 + "." + b3 }