Python Language
base64モジュール
サーチ…
前書き
Base64エンコーディングは、基数64を使用してバイナリをASCII文字列形式にエンコードする一般的な方式を表します.base64モジュールは標準ライブラリの一部です。つまり、Pythonと一緒にインストールされます。バイトと文字列の理解はこのトピックにとって非常に重要であり、 ここで再検討することができます 。このトピックでは、Base64モジュールのさまざまな機能とベースを使用する方法について説明します。
構文
- base64.b64encode(s、altchars = None)
- base64.b64decode(s、altchars = None、validate = False)
- base64.standard_b64encode(s)
- base64.standard_b64decode(s)
- base64.urlsafe_b64encode(s)
- base64.urlsafe_b64decode(s)
- base64.b32encode(s)
- base64.b32decode(s)
- base64.b16encode(s)
- base64.b16decode(s)
- base64.a85encode(b、foldspaces = False、wrapcol = 0、pad = False、adobe = False)
- base64.a85decode(b、foldpaces = False、adobe = False、ignorechars = b '\ t \ n \ r \ v')
- base64.b85encode(b、pad = False)
- base64.b85decode(b)
パラメーター
パラメータ | 説明 |
---|---|
base64.b64encode(s, altchars=None) | |
s | バイトのようなオブジェクト |
レター | Base64アルファベットを作成するときに、 '+'と '='文字を置き換える長さ2+の文字のバイト様オブジェクト。余分な文字は無視されます。 |
base64.b64decode(s, altchars=None, validate=False) | |
s | バイトのようなオブジェクト |
レター | Base64アルファベットを作成するときに、 '+'と '='文字を置き換える長さ2+の文字のバイト様オブジェクト。余分な文字は無視されます。 |
検証 | valideがTrueの場合、通常のBase64アルファベットまたは代替アルファベットにない文字は、パディングチェック前に破棄されません |
base64.standard_b64encode(s) | |
s | バイトのようなオブジェクト |
base64.standard_b64decode(s) | |
s | バイトのようなオブジェクト |
base64.urlsafe_b64encode(s) | |
s | バイトのようなオブジェクト |
base64.urlsafe_b64decode(s) | |
s | バイトのようなオブジェクト |
b32encode(s) | |
s | バイトのようなオブジェクト |
b32decode(s) | |
s | バイトのようなオブジェクト |
base64.b16encode(s) | |
s | バイトのようなオブジェクト |
base64.b16decode(s) | |
s | バイトのようなオブジェクト |
base64.a85encode(b, foldspaces=False, wrapcol=0, pad=False, adobe=False) | |
b | バイトのようなオブジェクト |
foldspaces | foldspacesがTrueの場合、4つの連続したスペースの代わりに 'y'という文字が使用されます。 |
ラップコール | 改行の前の文字数(0は改行を意味しません) |
パッド | padがTrueの場合、エンコード前にバイトの4の倍数にパディングされます |
アドビ | adobeがTrueの場合、Adobe製品で使用されているように '<〜'と ''〜> 'で囲まれてエンコードされます |
base64.a85decode(b, foldspaces=False, adobe=False, ignorechars=b'\t\n\r\v') | |
b | バイトのようなオブジェクト |
foldspaces | foldspacesがTrueの場合、4つの連続したスペースの代わりに 'y'という文字が使用されます。 |
アドビ | adobeがTrueの場合、Adobe製品で使用されているように '<〜'と ''〜> 'で囲まれてエンコードされます |
ignorechars | エンコード処理で無視するバイトのような文字オブジェクト |
base64.b85encode(b, pad=False) | |
b | バイトのようなオブジェクト |
パッド | padがTrueの場合、エンコード前にバイトの4の倍数にパディングされます |
base64.b85decode(b) | |
b | バイトのようなオブジェクト |
備考
Python 3.4が登場するまでは、Base64のエンコーディングとデコードの機能はbytes
またはbytes
bytearray
型でしかbytearray
。現在、これらの関数はすべてのバイト状オブジェクトを受け入れます 。
Base64のエンコードとデコード
スクリプトにbase64モジュールを含めるには、まずそれをインポートする必要があります:
import base64
base64のエンコードとデコードの両方の関数は、 バイトのようなオブジェクトを必要とします 。文字列をバイトにするには、Pythonの組み込みエンコード関数を使用して文字列をエンコードする必要があります。最も一般的には、 UTF-8
エンコーディングが使用されている、(異なる文字と言語を含む)これらの標準的なエンコーディングのしかし完全なリストを見つけることができるここでは公式のPythonドキュメントで。以下は、文字列をバイトにエンコードする例です。
s = "Hello World!"
b = s.encode("UTF-8")
最後の行の出力は次のようになります。
b'Hello World!'
b
接頭辞は、値がバイトオブジェクトであることを示すために使用されます。
これらのバイトをBase64でエンコードするには、 base64.b64encode()
関数を使用します。
import base64
s = "Hello World!"
b = s.encode("UTF-8")
e = base64.b64encode(b)
print(e)
そのコードは以下を出力します:
b'SGVsbG8gV29ybGQh'
これはまだバイトオブジェクト内にあります。これらのバイトから文字列を取得するには、Pythonのdecode()
メソッドをUTF-8
エンコーディングで使用できます。
import base64
s = "Hello World!"
b = s.encode("UTF-8")
e = base64.b64encode(b)
s1 = e.decode("UTF-8")
print(s1)
出力は次のようになります。
SGVsbG8gV29ybGQh
文字列をエンコードしてデコードする場合は、 base64.b64decode()
メソッドを使用できます。
import base64
# Creating a string
s = "Hello World!"
# Encoding the string into bytes
b = s.encode("UTF-8")
# Base64 Encode the bytes
e = base64.b64encode(b)
# Decoding the Base64 bytes to string
s1 = e.decode("UTF-8")
# Printing Base64 encoded string
print("Base64 Encoded:", s1)
# Encoding the Base64 encoded string into bytes
b1 = s1.encode("UTF-8")
# Decoding the Base64 bytes
d = base64.b64decode(b1)
# Decoding the bytes to string
s2 = d.decode("UTF-8")
print(s2)
期待どおり、出力は元の文字列になります。
Base64 Encoded: SGVsbG8gV29ybGQh
Hello World!
Base32のエンコードとデコード
base64モジュールには、Base32のエンコードおよびデコード機能も含まれています。これらの関数は、Base64関数と非常によく似ています。
import base64
# Creating a string
s = "Hello World!"
# Encoding the string into bytes
b = s.encode("UTF-8")
# Base32 Encode the bytes
e = base64.b32encode(b)
# Decoding the Base32 bytes to string
s1 = e.decode("UTF-8")
# Printing Base32 encoded string
print("Base32 Encoded:", s1)
# Encoding the Base32 encoded string into bytes
b1 = s1.encode("UTF-8")
# Decoding the Base32 bytes
d = base64.b32decode(b1)
# Decoding the bytes to string
s2 = d.decode("UTF-8")
print(s2)
これにより、次の出力が生成されます。
Base32 Encoded: JBSWY3DPEBLW64TMMQQQ====
Hello World!
Base16のエンコードとデコード
base64モジュールには、Base16のエンコードおよびデコード機能も含まれています。ベース16は、最も一般的には16進数と呼ばれます 。これらの関数は、Base64関数とBase32関数の両方に非常によく似ています。
import base64
# Creating a string
s = "Hello World!"
# Encoding the string into bytes
b = s.encode("UTF-8")
# Base16 Encode the bytes
e = base64.b16encode(b)
# Decoding the Base16 bytes to string
s1 = e.decode("UTF-8")
# Printing Base16 encoded string
print("Base16 Encoded:", s1)
# Encoding the Base16 encoded string into bytes
b1 = s1.encode("UTF-8")
# Decoding the Base16 bytes
d = base64.b16decode(b1)
# Decoding the bytes to string
s2 = d.decode("UTF-8")
print(s2)
これにより、次の出力が生成されます。
Base16 Encoded: 48656C6C6F20576F726C6421
Hello World!
ASCII85のエンコーディングとデコード
AdobeはBase85に似ていますが、その違いがあり、それ自身のエンコーディングと呼ばれるASCII85を作成しました。このエンコーディングは、Adobe PDFファイルで頻繁に使用されます。これらの関数はPython 3.4でリリースされました。それ以外の場合、関数base64.a85encode()
およびbase64.a85encode()
は前の例と同様です。
import base64
# Creating a string
s = "Hello World!"
# Encoding the string into bytes
b = s.encode("UTF-8")
# ASCII85 Encode the bytes
e = base64.a85encode(b)
# Decoding the ASCII85 bytes to string
s1 = e.decode("UTF-8")
# Printing ASCII85 encoded string
print("ASCII85 Encoded:", s1)
# Encoding the ASCII85 encoded string into bytes
b1 = s1.encode("UTF-8")
# Decoding the ASCII85 bytes
d = base64.a85decode(b1)
# Decoding the bytes to string
s2 = d.decode("UTF-8")
print(s2)
これにより、以下が出力されます。
ASCII85 Encoded: 87cURD]i,"Ebo80
Hello World!
Base85のエンコードとデコード
Base64、Base32、Base16の関数と同様に、Base85のエンコーディング関数とデコード関数はbase64.b85encode()
とbase64.b85decode()
です。
import base64
# Creating a string
s = "Hello World!"
# Encoding the string into bytes
b = s.encode("UTF-8")
# Base85 Encode the bytes
e = base64.b85encode(b)
# Decoding the Base85 bytes to string
s1 = e.decode("UTF-8")
# Printing Base85 encoded string
print("Base85 Encoded:", s1)
# Encoding the Base85 encoded string into bytes
b1 = s1.encode("UTF-8")
# Decoding the Base85 bytes
d = base64.b85decode(b1)
# Decoding the bytes to string
s2 = d.decode("UTF-8")
print(s2)
以下を出力します。
Base85 Encoded: NM&qnZy;B1a%^NF
Hello World!