Метод base64.Encoding.DecodeString

Метод base64.Encoding.DecodeString декодирует строку, закодированную в формате Base64, и возвращает исходные байтовые данные. Метод принимает один параметр — строку в кодировке Base64, а возвращает два значения: слайс байтов и ошибку. Если входная строка содержит недопустимые символы или имеет неверную длину, метод возвращает ошибку.

Синтаксис

godata, err := encoding.DecodeString(s)

Пример

Давайте закодируем строку "Hello, World!" в Base64, а затем декодируем ее обратно:

gopackage main

import (
  "encoding/base64"
  "fmt"
)

func main() {
  original := "Hello, World!"
  encoded := base64.StdEncoding.EncodeToString([]byte(original))
  fmt.Println("Encoded:", encoded)

  decoded, err := base64.StdEncoding.DecodeString(encoded)
  if err != nil {
    fmt.Println("Error:", err)
    return
  }
  fmt.Println("Decoded:", string(decoded))
}

Результат выполнения кода:

go"Encoded: SGVsbG8sIFdvcmxkIQ=="
"Decoded: Hello, World!"

Пример

Рассмотрим пример декодирования строки с использованием кодировки URLEncoding:

gopackage main

import (
  "encoding/base64"
  "fmt"
)

func main() {
  // URL-безопасная кодировка использует '-' вместо '+' и '_' вместо '/'
  encoded := "SGVsbG8sIFdvcmxkIQ=="
  decoded, err := base64.URLEncoding.DecodeString(encoded)
  if err != nil {
    fmt.Println("Error:", err)
    return
  }
  fmt.Println(string(decoded))
}

Результат выполнения кода:

go"Hello, World!"

Пример

Попробуем декодировать строку с недопустимыми символами:

gopackage main

import (
  "encoding/base64"
  "fmt"
)

func main() {
  invalid := "SGVsbG8sIFdvcmxkIQ===" // Неверное количество символов '='
  decoded, err := base64.StdEncoding.DecodeString(invalid)
  if err != nil {
    fmt.Println("Error:", err)
    return
  }
  fmt.Println(string(decoded))
}

Результат выполнения кода:

go"Error: illegal base64 data at input byte 23"

Пример

Декодирование бинарных данных с использованием RawStdEncoding (без символов '=' в конце):

gopackage main

import (
  "encoding/base64"
  "fmt"
)

func main() {
  // RawStdEncoding не добавляет символы '=' для выравнивания
  encoded := "SGVsbG8sIFdvcmxkIQ"
  decoded, err := base64.RawStdEncoding.DecodeString(encoded)
  if err != nil {
    fmt.Println("Error:", err)
    return
  }
  fmt.Println(string(decoded))
}

Результат выполнения кода:

go"Hello, World!"

Смотрите также

  • метод base64.Encoding.EncodeToString,
    который кодирует байтовые данные в строку Base64
  • метод base64.Encoding.Decode,
    который декодирует Base64 данные в байтовый слайс
  • функцию hex.DecodeString,
    которая декодирует шестнадцатеричную строку
  • функцию json.Unmarshal,
    которая декодирует JSON данные в структуру Go