2

これは、標準ライブラリのドキュメントからの関数の説明です。

binascii.a2b_hex(hexstr)

16 進文字列 hexstr で表されるバイナリ データを返します。この関数は b2a_hex() の逆関数です。hexstr には偶数の 16 進数 (大文字でも小文字でもかまいません) が含まれている必要があります。そうでない場合、TypeError が発生します。

ただし、次のコード サンプルは出力されます。Hello World!

import binascii
print binascii.a2b_hex('48656c6c6f20576f726c6421')

printがバイナリ データを文字列として解釈するのはなぜですか? 正確には何が起こっているのですか?

4

2 に答える 2

11

Python 2 では、すべてのバイナリ データが文字列として表現されるためです。str型は基本的に単なる一連のバイトです。

Python 3 では、基本str型は unicode 値 ( unicode()Python 2 では) であり、代わりにPython 2str型の名前が変更され、関数はバイトを出力します。bytesa2b_hex

>>> import binascii
>>> binascii.a2b_hex('48656c6c6f20576f726c6421')
b'Hello World!'
于 2013-05-29T07:55:41.670 に答える