下面分别介绍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编码与解码操作。