Go by Example: Base64 Encoding

Go base64 kodlash/dekodlash uchun o’rnatilgan qo’llab-quvvatlashni taqdim etadi.

package main

Ushbu sintaksis encoding/base64 paketini standart base64 nomi o’rniga b64 nomi bilan import qiladi. Bu quyida bizga biroz joy tejaydi.

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

Mana biz kodlaydigan/dekodlaydigan string.

    data := "abc123!?$*&()'-=@~"

Go ham standart, ham URL bilan mos keluvchi base64’ni qo’llab-quvvatlaydi. Mana standart enkoder yordamida qanday kodlash kerakligi. Enkoder []byte talab qiladi, shuning uchun stringimizni o’sha tipga o’tkazamiz.

    sEnc := b64.StdEncoding.EncodeToString([]byte(data))
    fmt.Println(sEnc)

Dekodlash xato qaytarishi mumkin, agar kirish ma’lumotining to’g’ri shakllanganini oldindan bilmasangiz, buni tekshirishingiz mumkin.

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

Bu URL bilan mos keluvchi base64 formati yordamida kodlaydi/dekodlaydi.

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

Satr standart va URL base64 enkoderlari bilan biroz farqli qiymatlarga kodlanadi (oxiridagi + va -), lekin ularning ikkalasi ham kerakli tarzda asl satrga dekodlanadi.

$ go run base64-encoding.go
YWJjMTIzIT8kKiYoKSctPUB+
abc123!?$*&()'-=@~
YWJjMTIzIT8kKiYoKSctPUB-
abc123!?$*&()'-=@~

Keyingi misol: .