Go 語言實現 Base64、Base58 編碼與解碼,很簡單

在 Go 語言中,實現 Base64 和 Base58 編碼與解碼是非常常見的任務。Go 標準庫中已經包含了 Base64 的編碼與解碼函數,而 Base58 需要使用第三方庫來實現。

下面分別介紹 Base64 和 Base58 編碼與解碼的實現方法。

Base64 編碼與解碼

Go 標準庫的encoding/base64包提供了 Base64 編碼與解碼的功能。

示例代碼

package main

import (
    "encoding/base64"
    "fmt"
)

// Base64Encode encodes a string to Base64
func Base64Encode(input string) string {
    return base64.StdEncoding.EncodeToString([]byte(input))
}

// Base64Decode decodes a Base64 encoded string
func Base64Decode(input string) (string, error) {
    decoded, err := base64.StdEncoding.DecodeString(input)
    if err != nil {
        return "", err
    }
    return string(decoded), nil
}

func main() {
    original := "Hello, World!"
    fmt.Println("Original:", original)

    encoded := Base64Encode(original)
    fmt.Println("Encoded:", encoded)

    decoded, err := Base64Decode(encoded)
    if err != nil {
        fmt.Println("Error decoding:", err)
        return
    }
    fmt.Println("Decoded:", decoded)
}

Base58 編碼與解碼

Base58 常用於比特幣等加密貨幣的地址編碼。Go 語言中,可以使用第三方庫github.com/btcsuite/btcutil/base58來實現 Base58 編碼與解碼。

示例代碼

首先,安裝btcsuite/btcutil包:

go get github.com/btcsuite/btcutil/base58

然後,實現 Base58 編碼與解碼:

package main

import (
    "fmt"
    "github.com/btcsuite/btcutil/base58"
)

// Base58Encode encodes a string to Base58
func Base58Encode(input string) string {
    return base58.Encode([]byte(input))
}

// Base58Decode decodes a Base58 encoded string
func Base58Decode(input string) (string, error) {
    decoded := base58.Decode(input)
    return string(decoded), nil
}

func main() {
    original := "Hello, World!"
    fmt.Println("Original:", original)

    encoded := Base58Encode(original)
    fmt.Println("Encoded:", encoded)

    decoded, err := Base58Decode(encoded)
    if err != nil {
        fmt.Println("Error decoding:", err)
        return
    }
    fmt.Println("Decoded:", decoded)
}

代碼分析

Base64

1 編碼:

func Base64Encode(input string) string {
    return base64.StdEncoding.EncodeToString([]byte(input))
}

將字符串轉換爲字節數組,然後使用EncodeToString方法進行 Base64 編碼。

2 解碼:

func Base64Decode(input string) (string, error) {
    decoded, err := base64.StdEncoding.DecodeString(input)
    if err != nil {
        return "", err
    }
    return string(decoded), nil
}

使用DecodeString方法進行 Base64 解碼,並將結果轉換爲字符串。如果解碼過程中出現錯誤,返回錯誤信息。

Base58

1 編碼:

func Base58Encode(input string) string {
    return base58.Encode([]byte(input))
}

將字符串轉換爲字節數組,然後使用base58.Encode方法進行 Base58 編碼。

2 解碼:

func Base58Decode(input string) (string, error) {
    decoded := base58.Decode(input)
    return string(decoded), nil
}

使用base58.Decode方法進行 Base58 解碼,並將結果轉換爲字符串。

總結

上述代碼展示瞭如何在 Go 語言中實現 Base64 和 Base58 的編碼與解碼。Base64 使用了 Go 標準庫,而 Base58 則使用了btcsuite/btcutil第三方庫。通過這些代碼,可以輕鬆實現對字符串的 Base64 和 Base58 編碼與解碼操作。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/88EL5nW6H5_1q2A7XKVPsw