Исходный код Base
Этот модуль предоставляет функции кодирования и декодирования данных в соответствии с RFC 4648.
В данном документе определены широко используемые схемы кодирования Base 16, Base 32 и Base 64.
Алфавит Base 16
| Значение | Кодирование | Значение | Кодирование | Значение | Кодирование | Значение | Кодирование |
|---|---|---|---|---|---|---|---|
| 0 | 0 | 4 | 4 | 8 | 8 | 12 | C |
| 1 | 1 | 5 | 5 | 9 | 9 | 13 | D |
| 2 | 2 | 6 | 6 | 10 | A | 14 | E |
| 3 | 3 | 7 | 7 | 11 | B | 15 | F |
Алфавит Base 32
| Значение | Кодирование | Значение | Кодирование | Значение | Кодирование | Значение | Кодирование |
|---|---|---|---|---|---|---|---|
| 0 | A | 9 | J | 18 | S | 27 | 3 |
| 1 | B | 10 | K | 19 | T | 28 | 4 |
| 2 | C | 11 | L | 20 | U | 29 | 5 |
| 3 | D | 12 | M | 21 | V | 30 | 6 |
| 4 | E | 13 | N | 22 | W | 31 | 7 |
| 5 | F | 14 | O | 23 | X | ||
| 6 | G | 15 | P | 24 | Y | (заполнитель) | = |
| 7 | H | 16 | Q | 25 | Z | ||
| 8 | I | 17 | R | 26 | 2 |
Алфавит Base 32 (расширенный шестнадцатеричный)
| Значение | Кодирование | Значение | Кодирование | Значение | Кодирование | Значение | Кодирование |
|---|
Алфавит Base 64
| Значение | Кодировка | Значение | Кодировка | Значение | Кодировка | Значение | Кодировка |
|---|---|---|---|---|---|---|---|
| 0 | A | 17 | R | 34 | i | 51 | z |
| 1 | B | 18 | S | 35 | j | 52 | 0 |
| 2 | C | 19 | T | 36 | k | 53 | 1 |
| 3 | D | 20 | U | 37 | l | 54 | 2 |
| 4 | E | 21 | V | 38 | m | 55 | 3 |
| 5 | F | 22 | W | 39 | n | 56 | 4 |
| 6 | G | 23 | X | 40 | o | 57 | 5 |
| 7 | H | 24 | Y | 41 | p | 58 | 6 |
| 8 | I | 25 | Z | 42 | q | 59 | 7 |
| 9 | J | 26 | a | 43 | r | 60 | 8 |
| 10 | K | 27 | b | 44 | s | 61 | 9 |
| 11 | L | 28 | c | 45 | t | 62 | + |
| 12 | M | 29 | d | 46 | u | 63 | / |
| 13 | N | 30 | e | 47 | v | ||
| 14 | O | 31 | f | 48 | w | (pad) | = |
| 15 | P | 32 | g | 49 | x | ||
| 16 | Q | 33 | h | 50 | y |
Алфавит Base 64 (безопасный для URL и имён файлов)
| Значение | Кодировка | Значение | Кодировка | Значение | Кодировка | Значение | Кодировка |
|---|---|---|---|---|---|---|---|
| 0 | A | 17 | R | 34 | i | 51 | z |
| 1 | B | 18 | S | 35 | j | 52 | 0 |
| 2 | C | 19 | T | 36 | k | 53 | 1 |
| 3 | D | 20 | U | 37 | l | 54 | 2 |
| 4 | E | 21 | V | 38 | m | 55 | 3 |
| 5 | F | 22 | W | 39 | n | 56 | 4 |
| 6 | G | 23 | X | 40 | o | 57 | 5 |
| 7 | H | 24 | Y | 41 | p | 58 | 6 |
| 8 | I | 25 | Z | 42 | q | 59 | 7 |
| 9 | J | 26 | a | 43 | r | 60 | 8 |
| 10 | K | 27 | b | 44 | s | 61 | 9 |
| 11 | L | 28 | c | 45 | t | 62 | - |
| 12 | M | 29 | d | 46 | u | 63 | _ |
| 13 | N | 30 | e | 47 | v | ||
| 14 | O | 31 | f | 48 | w | (pad) | = |
| 15 | P | 32 | g | 49 | x | ||
| 16 | Q | 33 | h | 50 | y |
Краткое описание
Типы
Функции
- decode16(string, opts \\ [])
Декодирует строку, закодированную в формате base 16, в двоичную строку.
- decode16!(string, opts \\ [])
Декодирует строку, закодированную в формате base 16, в двоичную строку.
- decode32(string, opts \\ [])
Декодирует строку, закодированную в формате base 32, в двоичную строку.
- decode32!(string, opts \\ [])
Декодирует строку, закодированную в формате base 32, в двоичную строку.
- decode64(string, opts \\ [])
Декодирует строку, закодированную в формате base 64, в двоичную строку.
- decode64!(string, opts \\ [])
Декодирует строку, закодированную в формате base 64, в двоичную строку.
- encode16(data, opts \\ [])
Кодирует двоичную строку в строку, закодированную в формате base 16.
- encode32(data, opts \\ [])
Кодирует двоичную строку в строку, закодированную в формате base 32.
- encode64(data, opts \\ [])
Кодирует двоичную строку в строку, закодированную в формате base 64.
- hex_decode32(string, opts \\ [])
Декодирует строку, закодированную в формате base 32 с расширенным шестнадцатеричным алфавитом, в двоичную строку.
- hex_decode32!(string, opts \\ [])
Декодирует строку, закодированную в формате base 32 с расширенным шестнадцатеричным алфавитом, в двоичную строку.
- hex_encode32(data, opts \\ [])
Кодирует двоичную строку в строку, закодированную в формате base 32 с расширенным шестнадцатеричным алфавитом.
- url_decode64(string, opts \\ [])
Декодирует строку, закодированную в формате base 64 с алфавитом, безопасным для URL и имён файлов, в двоичную строку.
- url_decode64!(string, opts \\ [])
Декодирует строку, закодированную в формате base 64 с алфавитом, безопасным для URL и имён файлов, в двоичную строку.
- url_encode64(data, opts \\ [])
Кодирует двоичную строку в строку, закодированную в формате base 64 с алфавитом, безопасным для URL и имён файлов.
Типы
Функции
decode16(string, opts \\ [])Source
@spec decode16(binary(), [{:case, decode_case()}]) :: {:ok, binary()} | :error Декодирует строку, закодированную в формате base 16, в двоичную строку.
Параметры
Доступные параметры:
-
:case- указывает регистр символов для декодирования
Значения для :case могут быть:
-
:upper- разрешает только символы верхнего регистра (по умолчанию) -
:lower- разрешает только символы нижнего регистра -
:mixed- разрешает символы смешанного регистра
Примеры
iex> Base.decode16("666F6F626172")
{:ok, "foobar"}
iex> Base.decode16("666f6f626172", case: :lower)
{:ok, "foobar"}
iex> Base.decode16("666f6F626172", case: :mixed)
{:ok, "foobar"} decode16!(string, opts \\ [])Source
@spec decode16!(binary(), [{:case, decode_case()}]) :: binary() Декодирует строку, закодированную в формате base 16, в двоичную строку.
Параметры
Доступные параметры:
-
:case- указывает регистр символов для декодирования
Значения для :case могут быть:
-
:upper- разрешает только символы верхнего регистра (по умолчанию) -
:lower- разрешает только символы нижнего регистра -
:mixed- разрешает символы смешанного регистра
Исключение ArgumentError генерируется, если заполнение некорректно или в строке присутствует недопустимый символ.
Примеры
iex> Base.decode16!("666F6F626172")
"foobar"
iex> Base.decode16!("666f6f626172", case: :lower)
"foobar"
iex> Base.decode16!("666f6F626172", case: :mixed)
"foobar" decode32(string, opts \\ [])Source
@spec decode32(binary(), case: decode_case(), padding: boolean()) ::
{:ok, binary()} | :error Декодирует строку, закодированную в формате base 32, в двоичную строку.
Параметры
Доступные параметры:
-
:case- указывает регистр символов для декодирования -
:padding- указывает, требуется ли заполнение
Значения для :case могут быть:
-
:upper- разрешает только символы верхнего регистра (по умолчанию) -
:lower- разрешает только символы нижнего регистра -
:mixed- разрешает символы смешанного регистра
Значения для :padding могут быть:
-
true- требует заполнения входной строки до ближайшего кратного 8 (по умолчанию) -
false- игнорирует заполнение из входной строки
Примеры
iex> Base.decode32("MZXW6YTBOI======")
{:ok, "foobar"}
iex> Base.decode32("mzxw6ytboi======", case: :lower)
{:ok, "foobar"}
iex> Base.decode32("mzXW6ytBOi======", case: :mixed)
{:ok, "foobar"}
iex> Base.decode32("MZXW6YTBOI", padding: false)
{:ok, "foobar"} decode32!(string, opts \\ [])Source
@spec decode32!(binary(), case: decode_case(), padding: boolean()) :: binary()
Декодирует строку, закодированную в формате base 32, в двоичную строку.
Исключение ArgumentError генерируется, если заполнение некорректно или в строке присутствует недопустимый символ.
Параметры
Доступные параметры:
-
:case- указывает регистр символов для декодирования -
:padding- указывает, требуется ли заполнение
Значения для :case могут быть:
-
:upper- разрешает только символы верхнего регистра (по умолчанию) -
:lower- разрешает только символы нижнего регистра -
:mixed- разрешает символы смешанного регистра
Значения для :padding могут быть:
-
true- требует заполнения входной строки до ближайшего кратного 8 (по умолчанию) -
false- игнорирует заполнение из входной строки
Примеры
iex> Base.decode32!("MZXW6YTBOI======")
"foobar"
iex> Base.decode32!("mzxw6ytboi======", case: :lower)
"foobar"
iex> Base.decode32!("mzXW6ytBOi======", case: :mixed)
"foobar"
iex> Base.decode32!("MZXW6YTBOI", padding: false)
"foobar" decode64(string, opts \\ [])Source
@spec decode64(binary(), ignore: :whitespace, padding: boolean()) ::
{:ok, binary()} | :error Декодирует строку, закодированную в формате base 64, в двоичную строку.
Принимает параметр ignore: :whitespace, который игнорирует все пробельные символы в входной строке.
Принимает параметр padding: false, который игнорирует заполнение из входной строки.
Примеры
iex> Base.decode64("Zm9vYmFy")
{:ok, "foobar"}
iex> Base.decode64("Zm9vYmFy\n", ignore: :whitespace)
{:ok, "foobar"}
iex> Base.decode64("Zm9vYg==")
{:ok, "foob"}
iex> Base.decode64("Zm9vYg", padding: false)
{:ok, "foob"} decode64!(string, opts \\ [])Source
@spec decode64!(binary(), ignore: :whitespace, padding: boolean()) :: binary()
Декодирует строку, закодированную в формате base 64, в двоичную строку.
Принимает параметр ignore: :whitespace, который игнорирует все пробельные символы в входной строке.
Принимает параметр padding: false, который игнорирует заполнение из входной строки.
Исключение ArgumentError генерируется, если заполнение некорректно или в строке присутствует недопустимый символ.
Примеры
iex> Base.decode64!("Zm9vYmFy")
"foobar"
iex> Base.decode64!("Zm9vYmFy\n", ignore: :whitespace)
"foobar"
iex> Base.decode64!("Zm9vYg==")
"foob"
iex> Base.decode64!("Zm9vYg", padding: false)
"foob" encode16(data, opts \\ [])Source
@spec encode16(binary(), [{:case, encode_case()}]) :: binary() Кодирует двоичную строку в строку, закодированную в формате base 16.
Параметры
Доступные параметры:
-
:case- указывает регистр символов для кодирования
Значения для :case могут быть:
-
:upper- использует символы верхнего регистра (по умолчанию) -
:lower- использует символы нижнего регистра
Примеры
iex> Base.encode16("foobar")
"666F6F626172"
iex> Base.encode16("foobar", case: :lower)
"666f6f626172" encode32(data, opts \\ [])Source
@spec encode32(binary(), case: encode_case(), padding: boolean()) :: binary()
Кодирует двоичную строку в строку, закодированную в формате base 32.
Параметры
Доступные параметры:
-
:case- указывает регистр символов для кодирования -
:padding- указывает, применять ли заполнение
Значения для :case могут быть:
-
:upper- использует символы верхнего регистра (по умолчанию) -
:lower- использует символы нижнего регистра
Значения для :padding могут быть:
-
true- заполняет выходную строку до ближайшего кратного 8 (по умолчанию) -
false- опускает заполнение из выходной строки
Примеры
iex> Base.encode32("foobar")
"MZXW6YTBOI======"
iex> Base.encode32("foobar", case: :lower)
"mzxw6ytboi======"
iex> Base.encode32("foobar", padding: false)
"MZXW6YTBOI" encode64(data, opts \\ [])Source
@spec encode64(binary(), [{:padding, boolean()}]) :: binary() Кодирует двоичную строку в строку, закодированную в формате base 64.
Принимает параметр padding: false, который опускает заполнение из выходной строки.
Примеры
iex> Base.encode64("foobar")
"Zm9vYmFy"
iex> Base.encode64("foob")
"Zm9vYg=="
iex> Base.encode64("foob", padding: false)
"Zm9vYg" hex_decode32(string, opts \\ [])Source
@spec hex_decode32(binary(), case: decode_case(), padding: boolean()) ::
{:ok, binary()} | :error Декодирует строку, закодированную в формате base 32 с расширенным шестнадцатеричным алфавитом, в двоичную строку.
Параметры
Доступные параметры:
-
:case- указывает регистр символов для декодирования -
:padding- указывает, требуется ли заполнение
Значения для :case могут быть:
-
:upper- разрешает только символы верхнего регистра (по умолчанию) -
:lower- разрешает только символы нижнего регистра -
:mixed- разрешает символы смешанного регистра
Значения для :padding могут быть:
-
true- требует заполнения входной строки до ближайшего кратного 8 (по умолчанию) -
false- игнорирует заполнение из входной строки
Примеры
iex> Base.hex_decode32("CPNMUOJ1E8======")
{:ok, "foobar"}
iex> Base.hex_decode32("cpnmuoj1e8======", case: :lower)
{:ok, "foobar"}
iex> Base.hex_decode32("cpnMuOJ1E8======", case: :mixed)
{:ok, "foobar"}
iex> Base.hex_decode32("CPNMUOJ1E8", padding: false)
{:ok, "foobar"} hex_decode32!(string, opts \\ [])Source
@spec hex_decode32!(binary(), case: decode_case(), padding: boolean()) :: binary()
Декодирует строку, закодированную в формате base 32 с расширенным шестнадцатеричным алфавитом, в двоичную строку.
Исключение ArgumentError генерируется, если заполнение некорректно или в строке присутствует неалфавитный символ.
Параметры
Допустимые параметры:
-
:case— определяет регистр символов для декодирования -
:padding— определяет, требуется ли заполнение
Значения для :case могут быть:
-
:upper— допускаются только символы в верхнем регистре (по умолчанию) -
:lower— допускаются только символы в нижнем регистре -
:mixed— допускаются символы в смешанном регистре
Значения для :padding могут быть:
-
true— входная строка должна быть дополнена до ближайшего кратного 8 (по умолчанию) -
false— заполнение из входной строки игнорируется
Примеры
iex> Base.hex_decode32!("CPNMUOJ1E8======")
"foobar"
iex> Base.hex_decode32!("cpnmuoj1e8======", case: :lower)
"foobar"
iex> Base.hex_decode32!("cpnMuOJ1E8======", case: :mixed)
"foobar"
iex> Base.hex_decode32!("CPNMUOJ1E8", padding: false)
"foobar" hex_encode32(data, opts \\ [])Source
@spec hex_encode32(binary(), case: encode_case(), padding: boolean()) :: binary()
Кодирует двоичную строку в строку base 32 с расширенным шестнадцатеричным алфавитом.
Параметры
Допустимые параметры:
-
:case— определяет регистр символов для кодирования -
:padding— определяет, нужно ли применять заполнение
Значения для :case могут быть:
-
:upper— используются символы в верхнем регистре (по умолчанию) -
:lower— используются символы в нижнем регистре
Значения для :padding могут быть:
-
true— дополнять выходную строку до ближайшего кратного 8 (по умолчанию) -
false— игнорировать заполнение в выходной строке
Примеры
iex> Base.hex_encode32("foobar")
"CPNMUOJ1E8======"
iex> Base.hex_encode32("foobar", case: :lower)
"cpnmuoj1e8======"
iex> Base.hex_encode32("foobar", padding: false)
"CPNMUOJ1E8" url_decode64(string, opts \\ [])Source
@spec url_decode64(binary(), ignore: :whitespace, padding: boolean()) ::
{:ok, binary()} | :error Декодирует строку, закодированную в формате base 64 с URL- и именем файла, безопасным алфавитом, в двоичную строку.
Принимает параметр ignore: :whitespace который будет игнорировать все пробельные символы в входной строке.
Принимает параметр padding: false который будет игнорировать заполнение в входной строке.
Примеры
iex> Base.url_decode64("_3_-_A==")
{:ok, <<255, 127, 254, 252>>}
iex> Base.url_decode64("_3_-_A==\n", ignore: :whitespace)
{:ok, <<255, 127, 254, 252>>}
iex> Base.url_decode64("_3_-_A", padding: false)
{:ok, <<255, 127, 254, 252>>} url_decode64!(string, opts \\ [])Source
@spec url_decode64!(binary(), ignore: :whitespace, padding: boolean()) :: binary()
Декодирует строку, закодированную в формате base 64 с URL- и именем файла, безопасным алфавитом, в двоичную строку.
Принимает параметр ignore: :whitespace который будет игнорировать все пробельные символы в входной строке.
Принимает параметр padding: false который будет игнорировать заполнение в входной строке.
Исключение ArgumentError генерируется, если заполнение некорректно или в строке присутствует неалфавитный символ.
Примеры
iex> Base.url_decode64!("_3_-_A==")
<<255, 127, 254, 252>>
iex> Base.url_decode64!("_3_-_A==\n", ignore: :whitespace)
<<255, 127, 254, 252>>
iex> Base.url_decode64!("_3_-_A", padding: false)
<<255, 127, 254, 252>> url_encode64(data, opts \\ [])Source
@spec url_encode64(binary(), [{:padding, boolean()}]) :: binary() Кодирует двоичную строку в строку base 64 с URL- и именем файла, безопасным алфавитом.
Принимает параметр padding: false который будет опускать заполнение в выходной строке.
Примеры
iex> Base.url_encode64(<<255, 127, 254, 252>>) "_3_-_A==" iex> Base.url_encode64(<<255, 127, 254, 252>>, padding: false) "_3_-_A"
© 2012-2024 The Elixir Team
Licensed under the Apache License, Version 2.0.
https://hexdocs.pm/elixir/1.17.2/Base.html