檢視原始碼 基礎 (Elixir v1.16.2)

此模組提供資料編碼和解碼函式,依循 RFC 4648

此文件定義常用的 16 進位、32 進位和 64 進位編碼範例。

16 進位字母

編碼編碼編碼編碼
00448812C
11559913D
226610A14E
337711B15F

32 進位字母

編碼編碼編碼編碼
0A9J18S273
1B10K19T284
2C11L20U295
3D12M21V306
4E13N22W317
5F14O23X
6G15P24Y(填充)=
7H16Q25Z
8I17R262

32 進位(延伸十六進位)字母

編碼編碼編碼編碼
009918I27R
1110A19J28S
2211B20K29T
3312C21L30U
4413D22M31V
5514E23N
6615F24O(填充)=
7716G25P
8817H26Q

64 進位字母

編碼編碼編碼編碼
0A17R34i51z
1B18S35j520
2C19T36k531
3D20U37l542
4E21V38m553
5F22W39n564
6G23X40o575
7H24Y41p586
8I25Z42q597
9J26a43r608
10K27b44s619
11L28c45t62+
12M29d46u63/
13N30e47v
14O31f48w(填充)=
15P32g49x
16Q33h50y

64 進位(URL 和檔名安全)字母

編碼編碼編碼編碼
0A17R34i51z
1B18S35j520
2C19T36k531
3D20U37l542
4E21V38m553
5F22W39n564
6G23X40o575
7H24Y41p586
8I25Z42q597
9J26a43r608
10K27b44s619
11L28c45t62-
12M29d46u63_
13N30e47v
14O31f48w(填充)=
15P32g49x
16Q33h50y

摘要

函數

將 base 16 編碼的字串解碼成二進制字串。

將 base 16 編碼的字串解碼成二進制字串。

將 base 32 編碼的字串解碼成二進制字串。

將 base 32 編碼的字串解碼成二進制字串。

將 base 64 編碼的字串解碼成二進制字串。

將 base 64 編碼的字串解碼成二進制字串。

將二進制字串編碼成 base 16 編碼的字串。

將二進制字串編碼成 base 32 編碼的字串。

將二進制字串編碼成 base 64 編碼的字串。

將使用延伸十六進制字母表的 base 32 編碼的字串解碼成二進制字串。

將使用延伸十六進制字母表的 base 32 編碼的字串解碼成二進制字串。

將二進制字串編碼成使用延伸十六進制字母表的 base 32 編碼的字串。

將使用 URL 和檔名安全字母表的 base 64 編碼的字串解碼成二進制字串。

將使用 URL 和檔名安全字母表的 base 64 編碼的字串解碼成二進制字串。

將二進制字串編碼成使用 URL 和檔名安全字母表的 base 64 編碼的字串。

類型

@type decode_case() :: :upper | :lower | :mixed
@type encode_case() :: :upper | :lower

函數

連結到此函數

decode16(字串, 選項 \\ [])

檢視原始碼
@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!(字串, 選項 \\ [])

檢視原始碼
@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(字串, 選項 \\ [])

檢視原始碼
@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!(字串, 選項 \\ [])

檢視原始碼
@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(字串, 選項 \\ [])

檢視原始碼
@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!(字串, 選項 \\ [])

檢視原始碼
@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(資料, 選項 \\ [])

檢視原始碼
@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(資料, 選項 \\ [])

檢視原始碼
@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(資料, 選項 \\ [])

檢視原始碼
@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(字串, 選項 \\ [])

檢視原始碼
@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!(字串, 選項 \\ [])

檢視原始碼
@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(資料, 選項 \\ [])

檢視原始碼
@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(字串, 選項 \\ [])

檢視原始碼
@spec url_decode64(binary(), ignore: :whitespace, padding: boolean()) ::
  {:ok, binary()} | :error

將使用 URL 和檔名安全字母表的 base 64 編碼的字串解碼成二進制字串。

接受 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!(字串, 選項 \\ [])

檢視原始碼
@spec url_decode64!(binary(), ignore: :whitespace, padding: boolean()) :: binary()

將使用 URL 和檔名安全字母表的 base 64 編碼的字串解碼成二進制字串。

接受 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(資料, 選項 \\ [])

檢視原始碼
@spec url_encode64(binary(), [{:padding, boolean()}]) :: binary()

將二進制字串編碼成使用 URL 和檔名安全字母表的 base 64 編碼的字串。

接受 padding: false 選項,它會從輸出字串中省略填充。

範例

iex> Base.url_encode64(<<255, 127, 254, 252>>)
"_3_-_A=="

iex> Base.url_encode64(<<255, 127, 254, 252>>, padding: false)
"_3_-_A"