Base64 кодирование в Golang

Beginner

This tutorial is from open-source community. Access the source code

Введение

Этот лаба旨在测试您在 Golang 中对 Base64 编码的了解。

Base64 кодирование

Требуется написать программу на Golang, которая кодирует и декодирует заданную строку с использованием как стандартной, так и URL-совместимой Base64 кодировки.

  • Программа должна импортировать пакет encoding/base64 с именем b64 вместо стандартного base64.
  • Программа должна кодировать заданную строку с использованием как стандартной, так и URL-совместимой Base64 кодировки.
  • Программа должна декодировать закодированную строку с использованием как стандартной, так и URL-совместимой Base64 декодировки.
  • Программа должна выводить закодированные и декодированные строки в консоль.
## Строка кодируется в несколько различных значений с
## использованием стандартного и URL-совместимого Base64
## кодировщиков (последний символ `+` вместо `-`), но
## обе декодируются в исходную строку, как и ожидается.

Ниже представлен полный код:

// Go предоставляет встроенную поддержку для [Base64
// кодирования/декодирования](https://en.wikipedia.org/wiki/Base64).

package main

// Эта конструкция импортирует пакет `encoding/base64` с
// именем `b64` вместо стандартного `base64`. Это позволит
// экономить место ниже.
import (
    b64 "encoding/base64"
    "fmt"
)

func main() {

    // Вот строка, которую мы будем кодировать/декодировать.
    data := "abc123!?$*&()'-=@~"

    // Go поддерживает как стандартную, так и URL-совместимую
    // Base64. Вот, как кодировать с использованием стандартного
    // кодировщика. Кодировщик требует `[]byte`, поэтому мы
    // преобразуем нашу `string` в этот тип.
    sEnc := b64.StdEncoding.EncodeToString([]byte(data))
    fmt.Println(sEnc)

    // Декодирование может вернуть ошибку, которую можно
    // проверить, если вы не знаете заранее, что входные
    // данные имеют правильный формат.
    sDec, _ := b64.StdEncoding.DecodeString(sEnc)
    fmt.Println(string(sDec))
    fmt.Println()

    // Это кодирует/декодирует с использованием URL-совместимой
    // Base64-формат.
    uEnc := b64.URLEncoding.EncodeToString([]byte(data))
    fmt.Println(uEnc)
    uDec, _ := b64.URLEncoding.DecodeString(uEnc)
    fmt.Println(string(uDec))
}

Резюме

В этом лабе вы узнали, как кодировать и декодировать заданную строку с использованием как стандартной, так и URL-совместимой Base64 кодировки в Golang.