Golang : Convert IPv4 address to packed 32-bit binary format

There are times when we need to deal with low-level network functions such as dealing with C program and the IP version 4 string address format is not really suitable. The IP version 4 address needs to be converted to packed 32-bit binary format first.

For example,

IP address packed to 7f000001

Below is an example on how to convert the IPv4 address to packed 32-bits with encoding/binary package.

Here you go!

 package main

 import (

 func IP4toInt(IPv4Address net.IP) int64 {
 IPv4Int := big.NewInt(0)
 return IPv4Int.Int64()

 //similar to Python's socket.inet_aton() function

 func Pack32BinaryIP4(ip4Address string) string {
 ipv4Decimal := IP4toInt(net.ParseIP(ip4Address))

 buf := new(bytes.Buffer)
 err := binary.Write(buf, binary.BigEndian, uint32(ipv4Decimal))

 if err != nil {
 fmt.Println("Unable to write to buffer:", err)

 // present in hexadecimal format
 result := fmt.Sprintf("%x", buf.Bytes())
 return result

 func main() {
 fmt.Println("IP address packed to ", Pack32BinaryIP4(""))
 fmt.Println("IP address packed to ", Pack32BinaryIP4(""))


IP address packed to 7f000001

IP address packed to c0a80001

Happy coding!





  See also : Golang : Convert decimal number(integer) to IPv4 address

By Adam Ng

IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.