Метод base64.Encoding.Decode
Метод base64.Encoding.Decode декодирует данные в формате Base64 в байтовый срез.
Метод принимает два параметра: первый параметр — целевой срез байтов для записи результата,
второй параметр — срез байтов (слайс) с закодированными данными Base64.
Метод возвращает количество записанных байтов и ошибку.
Если целевой срез слишком мал, метод вернет ошибку ErrTooSmall.
Если данные содержат некорректные символы, метод вернет ошибку.
Синтаксис
decodedLen, err := encoding.Decode(dst, src)
Пример
Давайте декодируем строку Base64 'SGVsbG8gV29ybGQ=' в байтовый срез:
package main
import (
"encoding/base64"
"fmt"
)
func main() {
src := []byte("SGVsbG8gV29ybGQ=")
dst := make([]byte, base64.StdEncoding.DecodedLen(len(src)))
n, err := base64.StdEncoding.Decode(dst, src)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Printf("Decoded %d bytes: %s\n", n, dst[:n])
}
Результат выполнения кода:
"Decoded 11 bytes: Hello World"
Пример
Давайте декодируем строку Base64 с данными, имеющими неправильную длину:
package main
import (
"encoding/base64"
"fmt"
)
func main() {
src := []byte("SGVsbG8gV29ybGQ")
dst := make([]byte, base64.StdEncoding.DecodedLen(len(src)))
n, err := base64.StdEncoding.Decode(dst, src)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Printf("Decoded %d bytes: %s\n", n, dst[:n])
}
Результат выполнения кода:
"Error: illegal base64 data at input byte 12"
Пример
Давайте покажем случай, когда целевой срез слишком мал для декодированных данных:
package main
import (
"encoding/base64"
"fmt"
)
func main() {
src := []byte("SGVsbG8gV29ybGQ=")
dst := make([]byte, 5)
n, err := base64.StdEncoding.Decode(dst, src)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Printf("Decoded %d bytes\n", n)
}
Результат выполнения кода:
"Error: base64: decoded output too short"
Смотрите также
-
метод
base64.Encoding.EncodeToString,
который кодирует байты в строку Base64 -
метод
base64.Encoding.DecodeString,
который декодирует строку Base64 -
метод
base64.Encoding.Encode,
который кодирует байты в Base64 -
переменную
base64.StdEncoding,
которая представляет стандартный алфавит Base64