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