Go в примери: Превръщане в Base64

Го предоставя вградена поддръжка за превръщане на данни в base64 (основа 64) и обратно превръщане от него в изходен вид. За приложението на този вид изобразяване на данни вижте (https://en.wikipedia.org/wiki/Base64).

package main

Така внасяме пакета encoding/base64 – с по-кратко име, за да пишем по-малко.

import (
    b64 "encoding/base64"
    "fmt"
)
func main() {

Ето низът, който ще превърнем и после ще върнем в изходния му вид.

    данни := "абв123!?$*&()'-=@~"

Го поддържа както обикновено, така и съвместимо с изто̀чници превръщане. Превръщачът очаква данни от вида []byte, така че трябва да превърнем нашия низ първо в такъв вид.

    sEnc := b64.StdEncoding.EncodeToString([]byte(данни))
    fmt.Println(sEnc)

Превръщането може да върне грешка. Можете да я обработите, ако не сте сигурни дали входните данни са правилни.

    sDec, _ := b64.StdEncoding.DecodeString(sEnc)
    fmt.Println(string(sDec))
    fmt.Println()

Следните редове превръщат в съвместим с изто̀чници вид и обратно.

    uEnc := b64.URLEncoding.EncodeToString([]byte(данни))
    fmt.Println(uEnc)
    uDec, _ := b64.URLEncoding.DecodeString(uEnc)
    fmt.Println(string(uDec))
}

Произведеният вид леко се различава между обикновеното и съвместимото с изто̀чници превръщане (завършващ знак + вместо -), но и в двата случая обратното превръщане води до един и същи първоначален вид данни.

$ go run base64-encoding.go 
0LDQsdCyMTIzIT8kKiYoKSctPUB+
абв123!?$*&()'-=@~
0LDQsdCyMTIzIT8kKiYoKSctPUB-
абв123!?$*&()'-=@~

Следващ пример: .