Go by Example မြန်မာဘာသာ: Base64 Encoding

Go သည် base64 encoding/decoding အတွက် built-in support ပေးပါသည်။

package main

ဒီ syntax သည် encoding/base64 package ကို ပုံမှန် base64 အစား b64 နာမည်နဲ့ import လုပ်ပါတယ်။ ဒီလိုလုပ်ခြင်းဖြင့် အောက်မှာ နေရာ (space) ချွေတာနိုင်ပါတယ်။

import (
    b64 "encoding/base64"
    "fmt"
)

ဒီမှာ encode/decode လုပ်မယ့် string ပါ။

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

Go သည် စံပြနှင့် URL-compatible base64 နှစ်မျိုးလုံးကို ထောက်ပံ့ပါတယ်။ ဒီမှာ စံပြ encoder ကိုသုံးပြီး encode လုပ်ပုံပြထားပါတယ်။ encoder သည် []byte လိုအပ်သောကြောင့် ကျွန်ုပ်တို့၏ string ကို ထိုအမျိုးအစားသို့ ပြောင်းလဲပါသည်။

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

Decoding သည် error ပြန်နိုင်ပါတယ်။ input က ကောင်းမွန်စွာ ဖွဲ့စည်းထားကြောင်း သင်မသိသေးပါက စစ်ဆေးနိုင်ပါသည်။

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

ဒီအပိုင်းသည် URL-compatible base64 format ကိုသုံးပြီး encode/decode လုပ်ပါတယ်။

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

စံပြ(standard)နှင့် URL base64 encoders များသည် string ကို အနည်းငယ်ကွဲပြားသော တန်ဖိုးများအဖြစ် encode လုပ်ပါသည် (နောက်ဆုံးတွင် + နှင့် - အသုံးပြုခြင်း) သို့သော် ၎င်းတို့နှစ်ခုလုံးသည် မူရင်း string သို့ လိုအပ်သလို ပြန်လည် decode လုပ်နိုင်ပါသည်။

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

နောက်ဥပမာ: Reading Files.