Базовый
Этот модуль предоставляет функции кодирования и декодирования данных в соответствии с RFC 4648.
В этом документе определены часто используемые схемы кодирования base 16, base 32 и base 64.
Алфавит Base 16
| Value | Encoding | Value | Encoding | Value | Encoding | Value | Encoding | |------:|---------:|------:|---------:|------:|---------:|------:|---------:| | 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
| Value | Encoding | Value | Encoding | Value | Encoding | Value | Encoding | |------:|---------:|------:|---------:|------:|---------:|------:|---------:| | 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| (pad)| =| | 7| H| 16| Q| 25| Z| | | | 8| I| 17| R| 26| 2| | |
Алфавит Base 32 (расширенный шестнадцатеричный)
| Value | Encoding | Value | Encoding | Value | Encoding | Value | Encoding | |------:|---------:|------:|---------:|------:|---------:|------:|---------:| | 0| 0| 9| 9| 18| I| 27| R| | 1| 1| 10| A| 19| J| 28| S| | 2| 2| 11| B| 20| K| 29| T| | 3| 3| 12| C| 21| L| 30| U| | 4| 4| 13| D| 22| M| 31| V| | 5| 5| 14| E| 23| N| | | | 6| 6| 15| F| 24| O| (pad)| =| | 7| 7| 16| G| 25| P| | | | 8| 8| 17| H| 26| Q| | |
Алфавит Base 64
| Value | Encoding | Value | Encoding | Value | Encoding | Value | Encoding | |------:|---------:|------:|---------:|------:|---------:|------:|---------:| | 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 и имён файлов)
| Value | Encoding | Value | Encoding | Value | Encoding | Value | Encoding | |------:|---------:|------:|---------:|------:|---------:|------:|---------:| | 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 \\ [])
decode16(binary(), keyword()) :: {: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 \\ [])
decode16!(binary(), keyword()) :: 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 \\ [])
decode32(binary(), keyword()) :: {: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 \\ [])
decode32!(binary(), keyword()) :: 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 \\ [])
decode64(binary(), keyword()) :: {: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 \\ [])
decode64!(binary(), keyword()) :: 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 \\ [])
encode16(binary(), keyword()) :: binary()
Кодирует бинарную строку в строку, закодированную в base 16.
Параметры
Допустимые параметры:
-
:case- указывает регистр символов для использования при кодировании
Значения для :case могут быть:
-
:upper- использует заглавные символы (по умолчанию) -
:lower- использует строчные символы
Примеры
iex> Base.encode16("foobar")
"666F6F626172"
iex> Base.encode16("foobar", case: :lower)
"666f6f626172" encode32(data, opts \\ [])
encode32(binary(), keyword()) :: 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 \\ [])
encode64(binary(), keyword()) :: 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 \\ [])
hex_decode32(binary(), keyword()) :: {: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 \\ [])
hex_decode32!(binary(), keyword()) :: 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 \\ [])
hex_encode32(binary(), keyword()) :: 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 \\ [])
url_decode64(binary(), keyword()) :: {: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 \\ [])
url_decode64!(binary(), keyword()) :: 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 \\ [])
url_encode64(binary(), keyword()) :: 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 Plataformatec
Licensed under the Apache License, Version 2.0.
https://hexdocs.pm/elixir/1.8.2/Base.html