# Golang : Convert IPv4 address to decimal number(base 10) or integer

Tags :

Problem : IP address in decimal is easier to search, filter or compare. For example, searching for IP address in a given range. You want to convert IPv4 address to integer to perform bitwise operation or for efficient storage in a database. How to do that? Solutions : package main import ( "fmt" "net" "strconv" "strings" ) func IP4toInt(IPv4Addr net.IP) int64 { bits := strings.Split(IPv4Addr.String(), ".") 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 main() { ipDecimal := IP4toInt(net.ParseIP("98.138.253.109")) fmt.Println(ipDecimal) Output : 1653276013 Is there an easier way? Of course! See this next example : package main import ( "fmt" "math/big" "net" ) func IP4toInt(IPv4Address net.IP) int64 { IPv4Int := big.NewInt(0) IPv4Int.SetBytes(IPv4Address.To4()) return IPv4Int.Int64() func main() { ipv4Decimal := IP4toInt(net.ParseIP("98.138.253.109")) fmt.Println(ipv4Decimal) Output : 1653276013 Happy coding! References : https://www.socketloop.com/tutorials/golang-how-to-convert-cast-string-to-ip-address