サーチ…


前書き

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!


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow