binascii —バイナリとASCIIの間で変換します
binascii モジュールには、バイナリ表現とさまざまなASCIIエンコードされたバイナリ表現を変換するための多数のメソッドが含まれています。 通常、これらの関数を直接使用するのではなく、代わりに uu 、 base64 、 binhex などのラッパーモジュールを使用します。 binascii モジュールには、高レベルのモジュールで使用される高速化のためにCで記述された低レベルの関数が含まれています。
ノート
a2b_*
関数は、ASCII文字のみを含むUnicode文字列を受け入れます。 他の関数はバイトのようなオブジェクトのみを受け入れます(バイト、バイト配列およびバッファプロトコルをサポートする他のオブジェクトなど)。
バージョン3.3で変更: ASCIIのみのUnicode文字列がa2b_*
関数で受け入れられるようになりました。
binascii モジュールは、次の関数を定義します。
- binascii.a2b_uu(string)
- uuencodeされたデータの1行をバイナリに変換し直し、バイナリデータを返します。 行には通常、最後の行を除いて45(バイナリ)バイトが含まれます。 行データの後に空白が続く場合があります。
- binascii.b2a_uu(data, *, backtick=False)
バイナリデータをASCII文字の行に変換します。戻り値は、改行文字を含む変換された行です。 データの長さは最大45である必要があります。 backtick がtrueの場合、ゼロはスペースではなく
'`'
で表されます。バージョン3.7で変更: backtick パラメーターが追加されました。
- binascii.a2b_base64(string)
- base64データのブロックをバイナリに変換し直して、バイナリデータを返します。 一度に複数の行を渡すことができます。
- binascii.b2a_base64(data, *, newline=True)
base64コーディングでバイナリデータをASCII文字の行に変換します。 戻り値は変換された行であり、 newline がtrueの場合は改行文字が含まれます。 この関数の出力は、 RFC 3548 に準拠しています。
バージョン3.6で変更: newline パラメーターが追加されました。
- binascii.a2b_qp(data, header=False)
- 引用符で囲まれた印刷可能なデータのブロックをバイナリに変換し直して、バイナリデータを返します。 一度に複数の行を渡すことができます。 オプションの引数 header が存在し、trueの場合、アンダースコアはスペースとしてデコードされます。
- binascii.b2a_qp(data, quotetabs=False, istext=True, header=False)
- バイナリデータをquoted-printableエンコーディングのASCII文字の行に変換します。 戻り値は変換された行です。 オプションの引数 quotetabs が存在し、trueの場合、すべてのタブとスペースがエンコードされます。 オプションの引数 istext が存在し、trueの場合、改行はエンコードされませんが、末尾の空白はエンコードされます。 オプションの引数 header が存在し、trueの場合、スペースは RFC 1522 に従ってアンダースコアとしてエンコードされます。 オプションの引数 header が存在し、falseの場合、改行文字もエンコードされます。 そうしないと、改行変換によってバイナリデータストリームが破損する可能性があります。
- binascii.a2b_hqx(string)
RLE解凍を行わずに、binhex4形式のASCIIデータをバイナリに変換します。 文字列には、完全な数のバイナリバイトが含まれている必要があります。または、(binhex4データの最後の部分の場合)残りのビットがゼロである必要があります。
バージョン3.9以降非推奨。
- binascii.rledecode_hqx(data)
binhex4標準に従って、データに対してRLE解凍を実行します。 アルゴリズムは、バイトの後に
0x90
を繰り返しインジケーターとして使用し、その後にカウントを続けます。0
のカウントは、0x90
のバイト値を指定します。 データ入力データが孤立した繰り返しインジケーターで終了しない限り、ルーチンは解凍されたデータを返します。孤立した繰り返しインジケーターの場合、 Incomplete 例外が発生します。バージョン3.2で変更:入力としてbytestringまたはbytearrayオブジェクトのみを受け入れます。
バージョン3.9以降非推奨。
- binascii.rlecode_hqx(data)
data でbinhex4スタイルのRLE圧縮を実行し、結果を返します。
バージョン3.9以降非推奨。
- binascii.b2a_hqx(data)
hexbin4バイナリからASCIIへの変換を実行し、結果の文字列を返します。 引数はすでにRLEコード化されており、長さは3で割り切れる必要があります(おそらく最後のフラグメントを除く)。
バージョン3.9以降非推奨。
- binascii.crc_hqx(data, value)
- value を初期CRCとして、 data の16ビットCRC値を計算し、結果を返します。 これは、CRC-CCITT多項式 x 16 + x 12 + x 5 を使用します。 ] + 1、多くの場合0x1021として表されます。 このCRCはbinhex4形式で使用されます。
- binascii.crc32(data[, value])
値の初期CRCから始めて、データの32ビットチェックサムであるCRC-32を計算します。 デフォルトの初期CRCはゼロです。 アルゴリズムは、ZIPファイルのチェックサムと一致しています。 このアルゴリズムはチェックサムアルゴリズムとして使用するように設計されているため、一般的なハッシュアルゴリズムとしての使用には適していません。 次のように使用します。
print(binascii.crc32(b"hello world")) # Or, in two pieces: crc = binascii.crc32(b"hello") crc = binascii.crc32(b" world", crc) print('crc32 = {:#010x}'.format(crc))
バージョン3.0で変更:結果は常に符号なしです。 すべてのPythonバージョンとプラットフォームで同じ数値を生成するには、
crc32(data) & 0xffffffff
を使用します。
- binascii.b2a_hex(data[, sep[, bytes_per_sep=1]])
binascii.hexlify(data[, sep[, bytes_per_sep=1]]) バイナリデータの16進表現を返します。 data のすべてのバイトは、対応する2桁の16進表現に変換されます。 したがって、返されるバイトオブジェクトは、 data の長さの2倍の長さになります。
同様の機能(ただしテキスト文字列を返す)も、 bytes.hex()メソッドを使用して簡単にアクセスできます。
sep を指定する場合は、1文字のstrまたはbytesオブジェクトである必要があります。 bytes_per_sep 入力バイトごとに出力に挿入されます。 セパレータの配置は、デフォルトで出力の右端からカウントされます。左からカウントする場合は、負の bytes_per_sep 値を指定してください。
>>> import binascii >>> binascii.b2a_hex(b'\xb9\x01\xef') b'b901ef' >>> binascii.hexlify(b'\xb9\x01\xef', '-') b'b9-01-ef' >>> binascii.b2a_hex(b'\xb9\x01\xef', b'_', 2) b'b9_01ef' >>> binascii.b2a_hex(b'\xb9\x01\xef', b' ', -2) b'b901 ef'
バージョン3.8で変更: sep および bytes_per_sep パラメーターが追加されました。
- binascii.a2b_hex(hexstr)
binascii.unhexlify(hexstr) 16進文字列 hexstr で表されるバイナリデータを返します。 この関数は、 b2a_hex()の逆です。 hexstr には、偶数の16進数(大文字または小文字)が含まれている必要があります。含まれていない場合、 Error 例外が発生します。
同様の機能(テキスト文字列引数のみを受け入れますが、空白に対してより寛大です)は、 bytes.fromhex()クラスメソッドを使用してアクセスすることもできます。
- exception binascii.Error
- エラー時に例外が発生しました。 これらは通常、プログラミングエラーです。
- exception binascii.Incomplete
- 不完全なデータで例外が発生しました。 これらは通常、プログラミングエラーではありませんが、もう少しデータを読み取って再試行することで処理できます。