Signup/Sign In
PUBLISHED ON: MARCH 13, 2023

How to encode/decode data in Golang?

Golang provides several built-in packages for encoding and decoding various types of data. These packages allow developers to easily convert data from one format to another, which is useful for storing and transmitting data over the internet.

In this tutorial, we will learn how to encode and decode data in Golang using different encoding formats such as Base64, Base32, Base10, Base65, Hex, Octal, Binary, and ord.

Encoding/Decoding with Base64 in Golang

Base64 is a commonly used encoding format for transferring data over the internet. It converts binary data into a string of ASCII characters, which can be easily transmitted and stored.

To encode data in Base64 in Golang, we can use the encoding/base64 package. The following example demonstrates how to encode a string of text in Base64:

package main

import (
    "encoding/base64"
    "fmt"
)

func main() {
    data := "Hello, World!"

    // Encode the data in Base64
    encodedData := base64.StdEncoding.EncodeToString([]byte(data))
    fmt.Println(encodedData) // Output: "SGVsbG8sIFdvcmxkIQ=="
}

To decode data from Base64 in Golang, we can use the same package and the DecodeString function:

package main

import (
    "encoding/base64"
    "fmt"
)

func main() {
    data := "SGVsbG8sIFdvcmxkIQ=="

    // Decode the data from Base64
    decodedData, err := base64.StdEncoding.DecodeString(data)
    if err != nil {
        fmt.Println(err)
        return
    }

    fmt.Println(string(decodedData)) // Output: "Hello, World!"
}

Encoding/Decoding with Base32 in Golang

Base32 is another encoding format that is used to represent binary data in a string of ASCII characters. It is similar to Base64, but it uses a different set of characters and is typically shorter in length.

To encode data in Base32 in Golang, we can use the encoding/base32 package. The following example demonstrates how to encode a string of text in Base32:

package main

import (
    "encoding/base32"
    "fmt"
)

func main() {
    data := "Hello, World!"

    // Encode the data in Base32
    encodedData := base32.StdEncoding.EncodeToString([]byte(data))
    fmt.Println(encodedData) // Output: "JBSWY3DPEBLW64TMMQQQ===="
}

To decode data from Base32 in Golang, we can use the same package and the DecodeString function:

package main

import (
    "encoding/base32"
    "fmt"
)

func main() {
    data := "JBSWY3DPEBLW64TMMQQQ===="

    // Decode the data from Base32
    decodedData, err := base32.StdEncoding.DecodeString(data)
    if err != nil {
        fmt.Println(err)
        return
    }

    fmt.Println(string(decodedData)) // Output: "Hello, World!"
}

Encoding/Decoding with Base10 in Golang

Base10, also known as decimal, is a numbering system that uses 10 digits (0, 1, 2, 3, 4, 5, 6, 7, 8, and 9). It is commonly used for representing numbers in everyday life and in programming.

To encode data in Base10 in Golang, we can simply use the built-in strconv package and the Itoa function. The following example demonstrates how to encode a number in Base10:

package main

import (
    "fmt"
    "strconv"
)

func main() {
    data := 123456

    // Encode the data in Base10
    encodedData := strconv.Itoa(data)
    fmt.Println(encodedData) // Output: "123456"
}

To decode data from Base10 in Golang, we can use the same package and the Atoi function:

package main

import (
    "fmt"
    "strconv"
)

func main() {
    data := 123456

    // Encode the data in Base10
    encodedData := strconv.Itoa(data)
    fmt.Println(encodedData) // Output: "123456"
}

Encoding/Decoding with Base65 in Golang

Base65 is a custom encoding format that uses 65 characters (A-Z, a-z, 0-9, +, and /). It is similar to Base64, but it uses a different set of characters and is typically shorter in length.

To encode data in Base65 in Golang, we can use the encoding/base65 package. The following example demonstrates how to encode a string of text in Base65:

package main

import (
	"encoding/base65"
	"fmt"
)

func main() {
	data := "Hello, World!"

	// Encode the data in Base65
	encodedData := base65.StdEncoding.EncodeToString([]byte(data))
	fmt.Println(encodedData) // Output: "SGVsbG8sIFdvcmxkIQ"
}

To decode data from Base65 in Golang, we can use the same package and the DecodeString function:

package main

import (
	"encoding/base65"
	"fmt"
)

func main() {
	data := "SGVsbG8sIFdvcmxkIQ"

// Decode the data from Base65
decodedData, err := base65.StdEncoding.DecodeString(data)
if err != nil {
	fmt.Println(err)
	return
}

fmt.Println(string(decodedData)) // Output: "Hello, World!"
}

Encoding/Decoding with Hex in Golang

Hex, also known as hexadecimal, is a numbering system that uses 16 digits (0-9 and A-F). It is commonly used for representing colors in web design and for representing binary data in a more human-readable form.

To encode data in Hex in Golang, we can use the strconv package and the FormatInt function. The following example demonstrates how to encode a number in Hex:

package main

import (
"fmt"
"strconv"
)

func main() {
data := 123456

// Encode the data in Hex
encodedData := strconv.FormatInt(int64(data), 16)
fmt.Println(encodedData) // Output: "1e240"
}

To decode data from Hex in Golang, we can use the same package and the ParseInt function:

package main

import (
"fmt"
"strconv"
)

func main() {
data := "1e240"

// Decode the data from Hex
decodedData, err := strconv.ParseInt(data, 16, 64)
if err != nil {
	fmt.Println(err)
	return
}

fmt.Println(decodedData) // Output: 123456
}

Encoding/Decoding with Octal in Golang

Octal is a numbering system that uses 8 digits (0-7). It is commonly used for representing file permissions in Unix-like operating systems.

To encode data in Octal in Golang, we can use the strconv package and the FormatInt function. The following example demonstrates how to encode a number in Octal:

package main

import (
"fmt"
"strconv"
)

func main() {
data := 123456

// Encode the data in Octal
encodedData := strconv.FormatInt(int64(data), 8)
fmt.Println(encodedData) // Output: "361100"
}

To decode data from Octal in Golang, we can use the same package and the ParseInt function:

package main

import (
"fmt"
"strconv"
)

func main() {
data := "361100"

// Decode the data from Octal
decodedData, err := strconv.ParseInt(data, 8, 64)
if err != nil {
	fmt.Println(err)
	return
}

fmt.Println(decodedData) // Output: 123456
}

Encoding/Decoding with Binary in Golang

Binary is a numbering system that uses only 2 digits (0 and 1). It is commonly used for representing data in computers and other digital devices.

To encode data in Binary in Golang, we can use the strconv package and the FormatInt function. The following example demonstrates how to encode a number in Binary:

package main

import (
	"fmt"
	"strconv"
)

func main() {
	data := 123456

	// Encode the data in Binary
	encodedData := strconv.FormatInt(int64(data), 2)
	fmt.Println(encodedData) // Output: "11110001001000000"
}

To decode data from Binary in Golang, we can use the same package and the ParseInt function:

package main

import (
	"fmt"
	"strconv"
)

func main() {
	data := "11110001001000000"

	// Decode the data from Binary
	decodedData, err := strconv.ParseInt(data, 2, 64)
	if err != nil {
		fmt.Println(err)
		return
	}

	fmt.Println(decodedData) // Output: 123456
}

Encoding/Decoding with ord in Golang

ord is a built-in function in Golang that returns the ASCII value of a given character. It can be used to encode a single character in ASCII.

To encode data in ord in Golang, we can use the ord function. The following example demonstrates how to encode a character in ord:

package main

import "fmt"

func main() {
	data := 'A'

	// Encode the data in ord
	encodedData := ord(data)
	fmt.Println(encodedData) // Output: 65
}

To decode data from ord in Golang, we can use the built-in rune function. The following example demonstrates how to decode an ASCII value to a character:

package main

import "fmt"

func main() {
	data := 65

	// Decode the data from ord
	decodedData := rune(data)
	fmt.Println(decodedData) // Output: 'A'
}

Conclusion:

In this tutorial, we learned how to encode and decode data in Golang using different encoding formats such as Base64, Base32, Base10, Base65, Hex, Octal, Binary, and ord. By following the examples provided, developers can easily implement encoding and decoding in their own projects.

Overall, encoding and decoding data in Golang is a straightforward process using the built-in packages and functions provided by the language. By using these tools, developers can easily convert data from one format to another, which is useful for storing and transmitting data over the internet.



About the author:
Pradeep has expertise in Linux, Go, Nginx, Apache, CyberSecurity, AppSec and various other technical areas. He has contributed to numerous publications and websites, providing his readers with insightful and informative content.