golang SDK内置base64 编码/解码 API
下面两个编码效果是一样的,不过
base64.URLEncoding
常用于编码URL或文件路径。
String
package main
import (
"encoding/base64"
"fmt"
)
func main() {
// String to encode
str := "hello world"
// base64.StdEncoding: Standard encoding with padding
// It requires a byte slice so we cast the string to []byte
encodedStr := base64.StdEncoding.EncodeToString([]byte(str))
fmt.Println("Encoded:", encodedStr)
// Decoding may return an error, in case the input is not well formed
decodedStr, err := base64.StdEncoding.DecodeString(encodedStr)
if err != nil {
panic("malformed input")
}
fmt.Println("Decoded:", string(decodedStr))
}
- 运行
Encoded: aGVsbG8gd29ybGQ=
Decoded: hello world
URL
package main
import (
"encoding/base64"
"fmt"
)
func main() {
// String to encode
str := "https://www.baidu.com/query?username=hello"
// It requires a byte slice so we cast the string to []byte
encodedStr := base64.URLEncoding.EncodeToString([]byte(str))
fmt.Println("Encoded:", encodedStr)
// Decoding may return an error, in case the input is not well formed
decodedStr, err := base64.URLEncoding.DecodeString(encodedStr)
if err != nil {
panic("malformed input")
}
fmt.Println("Decoded:", string(decodedStr))
}
utf-8
计算字符长度
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
str := "Hello, 世界"
fmt.Println("bytes =", len(str))
fmt.Println("runes =", utf8.RuneCountInString(str))
//Output:
//
//bytes = 13
//runes = 9
}