Введение
Этот лаба旨在测试您在 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.