Пакет base64 реализует base64 кодирование, определенное в RFC 4648.
Самым простым способом использование данного пакета являются методы EncodeToString и DecodeString.
EncodeToString возвращает base64 кодированную строку из исходного среза байтов.
func (enc *Encoding) EncodeToString(src []byte) string
Пример использования EncodeToString:
package main
import (
"encoding/base64"
"fmt"
)
func main() {
data := []byte("any + old & data")
str := base64.StdEncoding.EncodeToString(data)
fmt.Println(str)
}
Вывод:
YW55ICsgb2xkICYgZGF0YQ==
DecodeString возвращает байты, представляющие исходную base64 строку.
func (enc *Encoding) DecodeString(s string) ([]byte, error)
Пример использования DecodeString:
package main
import (
"encoding/base64"
"fmt"
)
func main() {
str := "c29tZSBkYXRhIHdpdGggACBhbmQg77u/"
data, err := base64.StdEncoding.DecodeString(str)
if err != nil {
fmt.Println("error:", err)
return
}
fmt.Printf("%q\n", data)
}
Вывод:
"some data with \x00 and \ufeff"
Пример совместного использования EncodeToString и DecodeString:
package main
import (
"encoding/base64"
"fmt"
)
func main() {
msg := "Hello, 世界"
encoded := base64.StdEncoding.EncodeToString([]byte(msg))
fmt.Println(encoded)
decoded, err := base64.StdEncoding.DecodeString(encoded)
if err != nil {
fmt.Println("decode error:", err)
return
}
fmt.Println(string(decoded))
}
Вывод:
SGVsbG8sIOS4lueVjA==
Hello, 世界
NewEncoder возвращает новый потоковый кодер base64. Данные, записанные в возвращенное устройство записи, будут закодированы с использованием enc, а затем записаны в w. Кодировки Base64 работают в 4-байтовых блоках; по окончании записи вызывающая сторона должна закрыть возвращаемый кодер, чтобы сбросить все частично записанные блоки.
func NewEncoder(enc *Encoding, w io.Writer) io.WriteCloser
Пример использования NewEncoder:
package main
import (
"encoding/base64"
"os"
)
func main() {
input := []byte("foo\x00bar")
encoder := base64.NewEncoder(base64.StdEncoding, os.Stdout)
encoder.Write(input)
// По окончании работы необходимо закрыть encoder,
// чтобы сбросить все частичные блоки.
// Если вы закомментируете следующую строку,
// последний частичный блок "r" не будет закодирован.
encoder.Close()
}
Вывод:
Zm9vAGJhcg==
Читайте также:
- Руны и кодировка символов в Golang
- Строка, байт, руна, символ в Golang
- Как использовать JSON в Golang
Комментариев нет:
Отправить комментарий