View Source Base (Elixir v1.13.0-rc.0)
This module provides data encoding and decoding functions according to RFC 4648.
This document defines the commonly used base 16, base 32, and base 64 encoding schemes.
base-16-alphabet
Base 16 alphabet
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-alphabet
Base 32 alphabet
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-extended-hex-alphabet
Base 32 (extended hex) alphabet
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-alphabet
Base 64 alphabet
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-and-filename-safe-alphabet
Base 64 (URL and filename safe) alphabet
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 |
Link to this section Summary
Functions
Decodes a base 16 encoded string into a binary string.
Decodes a base 16 encoded string into a binary string.
Decodes a base 32 encoded string into a binary string.
Decodes a base 32 encoded string into a binary string.
Decodes a base 64 encoded string into a binary string.
Decodes a base 64 encoded string into a binary string.
Encodes a binary string into a base 16 encoded string.
Encodes a binary string into a base 32 encoded string.
Encodes a binary string into a base 64 encoded string.
Decodes a base 32 encoded string with extended hexadecimal alphabet into a binary string.
Decodes a base 32 encoded string with extended hexadecimal alphabet into a binary string.
Encodes a binary string into a base 32 encoded string with an extended hexadecimal alphabet.
Decodes a base 64 encoded string with URL and filename safe alphabet into a binary string.
Decodes a base 64 encoded string with URL and filename safe alphabet into a binary string.
Encodes a binary string into a base 64 encoded string with URL and filename safe alphabet.
Link to this section Functions
Decodes a base 16 encoded string into a binary string.
options
Options
The accepted options are:
:case
- specifies the character case to accept when decoding
The values for :case
can be:
:upper
- only allows upper case characters (default):lower
- only allows lower case characters:mixed
- allows mixed case characters
An ArgumentError
exception is raised if the padding is incorrect or
a non-alphabet character is present in the string.
examples
Examples
iex> Base.decode16!("666F6F626172")
"foobar"
iex> Base.decode16!("666f6f626172", case: :lower)
"foobar"
iex> Base.decode16!("666f6F626172", case: :mixed)
"foobar"
Decodes a base 16 encoded string into a binary string.
options
Options
The accepted options are:
:case
- specifies the character case to accept when decoding
The values for :case
can be:
:upper
- only allows upper case characters (default):lower
- only allows lower case characters:mixed
- allows mixed case characters
examples
Examples
iex> Base.decode16("666F6F626172")
{:ok, "foobar"}
iex> Base.decode16("666f6f626172", case: :lower)
{:ok, "foobar"}
iex> Base.decode16("666f6F626172", case: :mixed)
{:ok, "foobar"}
Decodes a base 32 encoded string into a binary string.
An ArgumentError
exception is raised if the padding is incorrect or
a non-alphabet character is present in the string.
options
Options
The accepted options are:
:case
- specifies the character case to accept when decoding:padding
- specifies whether to require padding
The values for :case
can be:
:upper
- only allows upper case characters (default):lower
- only allows lower case characters:mixed
- allows mixed case characters
The values for :padding
can be:
true
- requires the input string to be padded to the nearest multiple of 8 (default)false
- ignores padding from the input string
examples
Examples
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"
Decodes a base 32 encoded string into a binary string.
options
Options
The accepted options are:
:case
- specifies the character case to accept when decoding:padding
- specifies whether to require padding
The values for :case
can be:
:upper
- only allows upper case characters (default):lower
- only allows lower case characters:mixed
- allows mixed case characters
The values for :padding
can be:
true
- requires the input string to be padded to the nearest multiple of 8 (default)false
- ignores padding from the input string
examples
Examples
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"}
Decodes a base 64 encoded string into a binary string.
Accepts ignore: :whitespace
option which will ignore all the
whitespace characters in the input string.
Accepts padding: false
option which will ignore padding from
the input string.
An ArgumentError
exception is raised if the padding is incorrect or
a non-alphabet character is present in the string.
examples
Examples
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"
Decodes a base 64 encoded string into a binary string.
Accepts ignore: :whitespace
option which will ignore all the
whitespace characters in the input string.
Accepts padding: false
option which will ignore padding from
the input string.
examples
Examples
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"}
Encodes a binary string into a base 16 encoded string.
options
Options
The accepted options are:
:case
- specifies the character case to use when encoding
The values for :case
can be:
:upper
- uses upper case characters (default):lower
- uses lower case characters
examples
Examples
iex> Base.encode16("foobar")
"666F6F626172"
iex> Base.encode16("foobar", case: :lower)
"666f6f626172"
Encodes a binary string into a base 32 encoded string.
options
Options
The accepted options are:
:case
- specifies the character case to use when encoding:padding
- specifies whether to apply padding
The values for :case
can be:
:upper
- uses upper case characters (default):lower
- uses lower case characters
The values for :padding
can be:
true
- pad the output string to the nearest multiple of 8 (default)false
- omit padding from the output string
examples
Examples
iex> Base.encode32("foobar")
"MZXW6YTBOI======"
iex> Base.encode32("foobar", case: :lower)
"mzxw6ytboi======"
iex> Base.encode32("foobar", padding: false)
"MZXW6YTBOI"
Encodes a binary string into a base 64 encoded string.
Accepts padding: false
option which will omit padding from
the output string.
examples
Examples
iex> Base.encode64("foobar")
"Zm9vYmFy"
iex> Base.encode64("foob")
"Zm9vYg=="
iex> Base.encode64("foob", padding: false)
"Zm9vYg"
Decodes a base 32 encoded string with extended hexadecimal alphabet into a binary string.
An ArgumentError
exception is raised if the padding is incorrect or
a non-alphabet character is present in the string.
options
Options
The accepted options are:
:case
- specifies the character case to accept when decoding:padding
- specifies whether to require padding
The values for :case
can be:
:upper
- only allows upper case characters (default):lower
- only allows lower case characters:mixed
- allows mixed case characters
The values for :padding
can be:
true
- requires the input string to be padded to the nearest multiple of 8 (default)false
- ignores padding from the input string
examples
Examples
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"
Decodes a base 32 encoded string with extended hexadecimal alphabet into a binary string.
options
Options
The accepted options are:
:case
- specifies the character case to accept when decoding:padding
- specifies whether to require padding
The values for :case
can be:
:upper
- only allows upper case characters (default):lower
- only allows lower case characters:mixed
- allows mixed case characters
The values for :padding
can be:
true
- requires the input string to be padded to the nearest multiple of 8 (default)false
- ignores padding from the input string
examples
Examples
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"}
Encodes a binary string into a base 32 encoded string with an extended hexadecimal alphabet.
options
Options
The accepted options are:
:case
- specifies the character case to use when encoding:padding
- specifies whether to apply padding
The values for :case
can be:
:upper
- uses upper case characters (default):lower
- uses lower case characters
The values for :padding
can be:
true
- pad the output string to the nearest multiple of 8 (default)false
- omit padding from the output string
examples
Examples
iex> Base.hex_encode32("foobar")
"CPNMUOJ1E8======"
iex> Base.hex_encode32("foobar", case: :lower)
"cpnmuoj1e8======"
iex> Base.hex_encode32("foobar", padding: false)
"CPNMUOJ1E8"
Decodes a base 64 encoded string with URL and filename safe alphabet into a binary string.
Accepts ignore: :whitespace
option which will ignore all the
whitespace characters in the input string.
Accepts padding: false
option which will ignore padding from
the input string.
An ArgumentError
exception is raised if the padding is incorrect or
a non-alphabet character is present in the string.
examples
Examples
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>>
Decodes a base 64 encoded string with URL and filename safe alphabet into a binary string.
Accepts ignore: :whitespace
option which will ignore all the
whitespace characters in the input string.
Accepts padding: false
option which will ignore padding from
the input string.
examples
Examples
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>>}
Encodes a binary string into a base 64 encoded string with URL and filename safe alphabet.
Accepts padding: false
option which will omit padding from
the output string.
examples
Examples
iex> Base.url_encode64(<<255, 127, 254, 252>>)
"_3_-_A=="
iex> Base.url_encode64(<<255, 127, 254, 252>>, padding: false)
"_3_-_A"