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

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)
b1, _ := strconv.Atoi(bits)
b2, _ := strconv.Atoi(bits)
b3, _ := strconv.Atoi(bits)

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)
return IPv4Int.Int64()
}

func main() {

ipv4Decimal := IP4toInt(net.ParseIP("98.138.253.109"))
fmt.Println(ipv4Decimal)
}
``````

Output :

1653276013

Happy coding!

References :