Spec-Zone.ru › Elixir 1.7

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

Этот модуль предоставляет функции кодирования и декодирования данных в соответствии с 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()) :: 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"

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"}

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"

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"}

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"

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"}

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()) :: 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_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_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()) :: 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_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_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.7.4/Base.html

Spec-Zone.ru

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