base64 --- Base16, Base32, Base64, Base85 數據編碼?
源代碼: Lib/base64.py
此模塊提供了將二進制數據編碼為可打印的 ASCII 字符以及將這些編碼解碼回二進制數據的函數。它為 RFC 3548 指定的 Base16, Base32 和 Base64 編碼以及已被廣泛接受的 Ascii85 和 Base85 編碼提供了編碼和解碼函數。
RFC 3548 編碼的目的是使得二進制數據可以作為電子郵件的內容正確地發送,用作 URL 的一部分,或者作為 HTTP POST 請求的一部分。其中的編碼算法和 uuencode 程序是不同的。
此模塊提供了兩個接口。新的接口提供了從 類字節對象 到 ASCII 字節 bytes 的編碼,以及將 ASCII 的 類字節對象 或字符串解碼到 bytes 的操作。此模塊支持定義在 RFC 3548 中的所有 base-64 字母表 (普通的、URL 安全的和文件系統安全的)。
舊的接口不提供從字符串的解碼操作,但提供了操作 文件對象 的編碼和解碼函數。舊接口只支持標準的 Base64 字母表,并且按照 RFC 2045 的規范每 76 個字符增加一個換行符。注意:如果你需要支持 RFC 2045,那么使用 email 模塊可能更加合適。
在 3.3 版更改: 新的接口提供的解碼函數現在已經支持只包含 ASCII 的 Unicode 字符串。
在 3.4 版更改: 所有 類字節對象 現在已經被所有編碼和解碼函數接受。添加了對 Ascii85/Base85 的支持。
新的接口提供:
-
base64.b64encode(s, altchars=None)? 對 bytes-like object s 進行 Base64 編碼,并返回編碼后的
bytes。可選項 altchars 必須是一個長 2 字節的 bytes-like object,它指定了用于替換
+和/的字符。這允許應用程序生成 URL 或文件系統安全的 Base64 字符串。默認值是None,使用標準 Base64 字母表。
-
base64.b64decode(s, altchars=None, validate=False)? 解碼 Base64 編碼過的 bytes-like object 或 ASCII 字符串 s 并返回解碼過的
bytes。可選項 altchars 必須是一個長 2 字節的 bytes-like object,它指定了用于替換
+和/的字符。如果 s 被不正確地填寫,一個
binascii.Error錯誤將被拋出。如果 validate 值為
False(默認情況),則在填充檢查前,將丟棄既不在標準 base-64 字母表之中也不在備用字母表中的字符。如果 validate 為True,這些非 base64 字符將導致binascii.Error。
-
base64.standard_b64encode(s)? 編碼 bytes-like object s,使用標準 Base64 字母表并返回編碼過的
bytes。
-
base64.standard_b64decode(s)? 解碼 bytes-like object 或 ASCII 字符串 s,使用標準 Base64 字母表并返回編碼過的
bytes。
-
base64.urlsafe_b64encode(s)? 編碼 bytes-like object s,使用 URL 與文件系統安全的字母表,使用
-以及_代替標準 Base64 字母表中的+和/。返回編碼過的bytes。結果中可能包含=。
-
base64.urlsafe_b64decode(s)? 解碼 bytes-like object 或 ASCII 字符串 s,使用 URL 與文件系統安全的字母表,使用
-以及_代替標準 Base64 字母表中的+和/。返回解碼過的bytes
-
base64.b32encode(s)? 用 Base32 編碼 bytes-like object s 并返回編碼過的
bytes
-
base64.b32decode(s, casefold=False, map01=None)? 解碼 Base32 編碼過的 bytes-like object 或 ASCII 字符串 s 并返回解碼過的
bytes。可選的 casefold 是一個指定小寫字幕是否可接受為輸入的標志。為了安全考慮,默認值為
False。RFC 3548 允許將字母 0(zero) 映射為字母 O(oh),并可以選擇是否將字母 1(one) 映射為 I(eye) 或 L(el)??蛇x參數 map01 不是
None時,它的值指定 1 的映射目標 (I 或 l),當 map01 非None時, 0 總是被映射為 O。為了安全考慮,默認值被設為None,如果是這樣, 0 和 1 不允許被作為輸入。如果 s 被錯誤地填寫或輸入中存在字母表之外的字符,將拋出
binascii.Error。
-
base64.b16encode(s)? 用 Base16 編碼 bytes-like object s 并返回編碼過的
bytes
-
base64.b16decode(s, casefold=False)? 解碼 Base16 編碼過的 bytes-like object 或 ASCII 字符串 s 并返回解碼過的
bytes。可選的 casefold 是一個指定小寫字幕是否可接受為輸入的標志。為了安全考慮,默認值為
False。如果 s 被錯誤地填寫或輸入中存在字母表之外的字符,將拋出
binascii.Error。
-
base64.a85encode(b, *, foldspaces=False, wrapcol=0, pad=False, adobe=False)? 用 Ascii85 編碼 bytes-like object s 并返回編碼過的
bytesfoldspaces 是一個可選的標志,使用特殊的短序列 'y' 代替 'btoa' 提供的 4 個連續空格 (ASCII 0x20)。這個特性不被 "標準" Ascii85 編碼支持。
wrapcol 控制了輸出是否包含換行符 (
b'\n'). 如果該值非零, 則每一行只有該值所限制的字符長度.pad 控制在編碼之前輸入是否填充為4的倍數。請注意,
btoa實現總是填充。adobe 控制編碼后的字節序列是否要加上
<~和~>,這是 Adobe 實現所使用的。3.4 新版功能.
-
base64.a85decode(b, *, foldspaces=False, adobe=False, ignorechars=b' \t\n\r\v')? 解碼 Ascii85 編碼過的 bytes-like object 或 ASCII 字符串 s 并返回解碼過的
bytes。foldspaces 旗標指明是否應接受 'y' 短序列作為 4 個連續空格 (ASCII 0x20) 的快捷方式。 此特性不被 "標準" Ascii85 編碼格式所支持。
adobe 控制輸入序列是否為 Adobe Ascii85 格式 (即附加 <~ 和 ~>)。
ignorechars 應當是一個 bytes-like object 或 ASCII 字符串,其中包含要從輸入中忽略的字符。 這應當只包含空白字符,并且默認包含 ASCII 中所有的空白字符。
3.4 新版功能.
-
base64.b85encode(b, pad=False)? 用 base85(如 git 風格的二進制 diff 數據所用格式)編碼 bytes-like object b 并返回編碼后的
bytes。如果 pad 為真值,輸入將以
b'\0'填充以使其編碼前長度為 4 字節的倍數。3.4 新版功能.
-
base64.b85decode(b)? 解碼 base85 編碼過的 bytes-like object 或 ASCII 字符串 b 并返回解碼過的
bytes。 如有必要,填充會被隱式地移除。3.4 新版功能.
舊式接口:
-
base64.decode(input, output)? 解碼二進制 input 文件的內容并將結果二進制數據寫入 output 文件。 input 和 output 必須為 文件對象. input 將被讀取直至
input.readline()返回空字節串對象。
-
base64.decodebytes(s)? 解碼 bytes-like object s,該對象必須包含一行或多行 base64 編碼的數據,并返回已解碼的
bytes。3.1 新版功能.
-
base64.decodestring(s)? 已棄用的
decodebytes()的別名。3.1 版后已移除.
-
base64.encode(input, output)? 編碼二進制 input 文件的內容并將經 base64 編碼的數據寫入 output 文件。 input 和 output 必須為 文件對象。 input 將被讀取直到
input.read()返回空字節串對象。encode()會在每輸出 76 個字節之后插入一個換行符 (b'\n'),并會確保輸出總是以換行符來結束,如 RFC 2045 (MIME) 所規定的那樣。
-
base64.encodebytes(s)? 編碼 bytes-like object s,其中可以包含任意二進制數據,并返回包含經 base64 編碼數據的
bytes,每輸出 76 個字節之后將帶一個換行符 (b'\n'),并會確保在末尾也有一個換行符,如 RFC 2045 (MIME) 所規定的那樣。3.1 新版功能.
-
base64.encodestring(s)? 一個被棄用的
encodebytes()的別名。3.1 版后已移除.
此模塊的一個使用示例:
>>> import base64
>>> encoded = base64.b64encode(b'data to be encoded')
>>> encoded
b'ZGF0YSB0byBiZSBlbmNvZGVk'
>>> data = base64.b64decode(encoded)
>>> data
b'data to be encoded'
