Метод base64.Encoding.DecodeString
Метод base64.Encoding.DecodeString декодирует строку, закодированную в формате Base64, и возвращает исходные байтовые данные. Метод принимает один параметр — строку в кодировке Base64, а возвращает два значения: слайс байтов и ошибку. Если входная строка содержит недопустимые символы или имеет неверную длину, метод возвращает ошибку.
Синтаксис
data, err := encoding.DecodeString(s)
Пример
Давайте закодируем строку "Hello, World!" в Base64, а затем декодируем ее обратно:
package 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))
}
Результат выполнения кода:
"Encoded: SGVsbG8sIFdvcmxkIQ=="
"Decoded: Hello, World!"
Пример
Рассмотрим пример декодирования строки с использованием кодировки URLEncoding:
package 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))
}
Результат выполнения кода:
"Hello, World!"
Пример
Попробуем декодировать строку с недопустимыми символами:
package 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))
}
Результат выполнения кода:
"Error: illegal base64 data at input byte 23"
Пример
Декодирование бинарных данных с использованием RawStdEncoding (без символов '=' в конце):
package 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))
}
Результат выполнения кода:
"Hello, World!"
Смотрите также
-
метод
base64.Encoding.EncodeToString,
который кодирует байтовые данные в строку Base64 -
метод
base64.Encoding.Decode,
который декодирует Base64 данные в байтовый слайс -
функцию
hex.DecodeString,
которая декодирует шестнадцатеричную строку -
функцию
json.Unmarshal,
которая декодирует JSON данные в структуру Go