Spec-Zone.ru › Elixir 1.3

Базовая кодировка

Этот модуль предоставляет функции кодирования и декодирования данных в соответствии с 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.t) :: {: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.t) :: 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.t) :: {: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.t) :: 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.t) :: {: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.t) :: 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.t) :: 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.t) :: 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.t) :: 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.t) :: {: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.t) :: 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.t) :: 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.t) :: {: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.t) :: 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.t) :: 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.3.4/Base.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API