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 127.0.0.1 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 (
"bytes"
"encoding/binary"
"fmt"
"math/big"
"net"
)
func IP4toInt(IPv4Address net.IP) int64 {
IPv4Int := big.NewInt(0)
IPv4Int.SetBytes(IPv4Address.To4())
return IPv4Int.Int64()
}
//similar to Python's socket.inet_aton() function
//https://docs.python.org/3/library/socket.html#socket.inet_aton
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 127.0.0.1 packed to ", Pack32BinaryIP4("127.0.0.1"))
fmt.Println("IP address 192.168.0.1 packed to ", Pack32BinaryIP4("192.168.0.1"))
}
Output:
IP address 127.0.0.1 packed to 7f000001
IP address 192.168.0.1 packed to c0a80001
Happy coding!
References:
https://www.socketloop.com/tutorials/golang-convert-decimal-number-integer-to-ipv4-address
https://golang.org/pkg/encoding/binary/#Write
https://www.socketloop.com/tutorials/golang-how-to-convert-cast-string-to-ip-address
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.
Advertisement
Tutorials
+21.6k Golang : Strings to lowercase and uppercase example
+15.1k Golang : How to extract links from web page ?
+6.4k Golang : Example of how to detect which type of script a word belongs to
+13.3k Golang : Parsing or breaking down URL
+8.4k Golang : Accessing content anonymously with Tor
+35k Golang : Display float in 2 decimal points and rounding up or down
+5.9k Golang : How to call function inside template with template.FuncMap
+4.7k Golang : Configure crontab to poll every two minutes 8am to 6pm Monday to Friday
+12.3k Golang : Verify token from Google Authenticator App
+23.5k Golang : convert rune to integer value
+11.1k Golang : Add ASCII art to command line application launching process
+4.9k Golang : Measure execution time for a function