18.14. binascii —バイナリとASCIIの間で変換—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/2.7/library/binascii
移動先:案内検索

18.14。 binascii —バイナリとASCIIの間で変換する

binascii モジュールには、バイナリ表現とさまざまなASCIIエンコードバイナリ表現を変換するための多数のメソッドが含まれています。 通常、これらの関数を直接使用するのではなく、代わりに uubase64binhex などのラッパーモジュールを使用します。 binascii モジュールには、高レベルのモジュールで使用される高速化のためにCで記述された低レベルの関数が含まれています。

binascii モジュールは、次の関数を定義します。

binascii.a2b_uu(string)
uuencodeされたデータの1行をバイナリに変換し直し、バイナリデータを返します。 行には通常、最後の行を除いて45(バイナリ)バイトが含まれます。 行データの後に空白が続く場合があります。
binascii.b2a_uu(data)
バイナリデータをASCII文字の行に変換します。戻り値は、改行文字を含む変換された行です。 データの長さは最大45である必要があります。
binascii.a2b_base64(string)
base64データのブロックをバイナリに変換し直して、バイナリデータを返します。 一度に複数の行を渡すことができます。
binascii.b2a_base64(data)
base64コーディングでバイナリデータをASCII文字の行に変換します。 戻り値は、改行文字を含む変換された行です。 この関数の元々の使用例は、一連の57バイトの入力行をフィードして、MIME-base64標準に準拠する出力行を取得することであったため、改行が追加されました。 それ以外の場合、出力は RFC 3548 に準拠しています。
binascii.a2b_qp(string[, header])
引用符で囲まれた印刷可能なデータのブロックをバイナリに変換し直して、バイナリデータを返します。 一度に複数の行を渡すことができます。 オプションの引数 header が存在し、trueの場合、アンダースコアはスペースとしてデコードされます。
binascii.b2a_qp(data[, quotetabs, istext, header])
バイナリデータをquoted-printableエンコーディングのASCII文字の行に変換します。 戻り値は変換された行です。 オプションの引数 quotetabs が存在し、trueの場合、すべてのタブとスペースがエンコードされます。 オプションの引数 istext が存在し、trueの場合、改行はエンコードされませんが、末尾の空白はエンコードされます。 オプションの引数 header が存在し、trueの場合、スペースはRFC1522に従ってアンダースコアとしてエンコードされます。 オプションの引数 header が存在し、falseの場合、改行文字もエンコードされます。 そうしないと、改行変換によってバイナリデータストリームが破損する可能性があります。
binascii.a2b_hqx(string)
RLE解凍を行わずに、binhex4形式のASCIIデータをバイナリに変換します。 文字列には、完全な数のバイナリバイトが含まれている必要があります。または、(binhex4データの最後の部分の場合)残りのビットがゼロである必要があります。
binascii.rledecode_hqx(data)
binhex4標準に従って、データに対してRLE解凍を実行します。 アルゴリズムは、バイトの後に0x90を繰り返しインジケーターとして使用し、その後にカウントを続けます。 0のカウントは、0x90のバイト値を指定します。 データ入力データが孤立した繰り返しインジケーターで終了しない限り、ルーチンは解凍されたデータを返します。孤立した繰り返しインジケーターの場合、 Incomplete 例外が発生します。
binascii.rlecode_hqx(data)
data でbinhex4スタイルのRLE圧縮を実行し、結果を返します。
binascii.b2a_hqx(data)
hexbin4バイナリからASCIIへの変換を実行し、結果の文字列を返します。 引数はすでにRLEコード化されており、長さは3で割り切れる必要があります(おそらく最後のフラグメントを除く)。
binascii.crc_hqx(data, crc)
data の16ビットCRC値を計算し、最初の crc から始めて結果を返します。 これは、CRC-CCITT多項式 x 16 + x 12 + x 5 を使用します。 ] + 1、多くの場合0x1021として表されます。 このCRCはbinhex4形式で使用されます。
binascii.crc32(data[, crc])

最初のcrcから始めて、データの32ビットチェックサムであるCRC-32を計算します。 これは、ZIPファイルのチェックサムと一致しています。 このアルゴリズムはチェックサムアルゴリズムとして使用するように設計されているため、一般的なハッシュアルゴリズムとしての使用には適していません。 次のように使用します。

print binascii.crc32("hello world")
# Or, in two pieces:
crc = binascii.crc32("hello")
crc = binascii.crc32(" world", crc) & 0xffffffff
print 'crc32 = 0x%08x' % crc

ノート

すべてのPythonバージョンとプラットフォームで同じ数値を生成するには、crc32(data)&0xffffffffを使用します。 パックされたバイナリ形式のチェックサムのみを使用している場合、戻り値は符号に関係なく正しい32ビットのバイナリ表現であるため、これは必要ありません。


バージョン2.6で変更:プラットフォームに関係なく、戻り値は[-2 ** 31、2 ** 31-1]の範囲にあります。 以前は、値は一部のプラットフォームでは署名され、他のプラットフォームでは署名されていませんでした。 Python 3の動作と一致させたい場合は、値に&0xffffffffを使用します。


バージョン3.0で変更:戻り値は符号なしで、プラットフォームに関係なく[0、2 ** 32-1]の範囲です。


binascii.b2a_hex(data)

binascii.hexlify(data)

バイナリデータの16進表現を返します。 data のすべてのバイトは、対応する2桁の16進表現に変換されます。 したがって、結果の文字列は data の長さの2倍になります。
binascii.a2b_hex(hexstr)

binascii.unhexlify(hexstr)

16進文字列 hexstr で表されるバイナリデータを返します。 この関数は、 b2a_hex()の逆です。 hexstr には、偶数の16進数(大文字または小文字)が含まれている必要があります。含まれていない場合、TypeErrorが発生します。
exception binascii.Error
エラー時に例外が発生しました。 これらは通常、プログラミングエラーです。
exception binascii.Incomplete
不完全なデータで例外が発生しました。 これらは通常、プログラミングエラーではありませんが、もう少しデータを読み取って再試行することで処理できます。

も参照してください

モジュール base64
base 16、32、および64でのRFC準拠のbase64スタイルのエンコーディングのサポート。
モジュール binhex
Macintoshで使用されるbinhex形式のサポート。
モジュール uu
Unixで使用されるUUエンコーディングのサポート。
モジュール quopri
MIME電子メールメッセージで使用されるquoted-printableエンコーディングのサポート。