Go語言實現(xiàn)Base64、Base58編碼與解碼,很簡單
在Go語言中,實現(xiàn)Base64和Base58編碼與解碼是非常常見的任務(wù)。Go標(biāo)準(zhǔn)庫中已經(jīng)包含了Base64的編碼與解碼函數(shù),而Base58需要使用第三方庫來實現(xiàn)。
下面分別介紹Base64和Base58編碼與解碼的實現(xiàn)方法。
Base64 編碼與解碼
Go標(biāo)準(zhǔn)庫的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來實現(xiàn)Base58編碼與解碼。
示例代碼
首先,安裝btcsuite/btcutil包:
go get github.com/btcsuite/btcutil/base58
然后,實現(xiàn)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))
}
將字符串轉(zhuǎn)換為字節(jié)數(shù)組,然后使用EncodeToString方法進(jìn)行Base64編碼。
2 解碼:
func Base64Decode(input string) (string, error) {
decoded, err := base64.StdEncoding.DecodeString(input)
if err != nil {
return "", err
}
return string(decoded), nil
}
使用DecodeString方法進(jìn)行Base64解碼,并將結(jié)果轉(zhuǎn)換為字符串。如果解碼過程中出現(xiàn)錯誤,返回錯誤信息。
Base58
1 編碼:
func Base58Encode(input string) string {
return base58.Encode([]byte(input))
}
將字符串轉(zhuǎn)換為字節(jié)數(shù)組,然后使用base58.Encode方法進(jìn)行Base58編碼。
2 解碼:
func Base58Decode(input string) (string, error) {
decoded := base58.Decode(input)
return string(decoded), nil
}
使用base58.Decode方法進(jìn)行Base58解碼,并將結(jié)果轉(zhuǎn)換為字符串。
總結(jié)
上述代碼展示了如何在Go語言中實現(xiàn)Base64和Base58的編碼與解碼。Base64使用了Go標(biāo)準(zhǔn)庫,而Base58則使用了btcsuite/btcutil第三方庫。通過這些代碼,可以輕松實現(xiàn)對字符串的Base64和Base58編碼與解碼操作。