为什么binascii.a2b_hex()返回一个字符串?

时间:2013-05-29 07:54:40

标签: python python-2.7

这是standard library documentation

中函数的描述
  

binascii.a2b_hex(hexstr)

     

返回十六进制字符串hexstr表示的二进制数据。该函数与b2a_hex()的反函数。 hexstr必须包含偶数个十六进制数字(可以是大写或小写),否则会引发TypeError。

但是,以下代码示例打印出Hello World!

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

为什么print将二进制数据解释为字符串?到底是怎么回事?

1 个答案:

答案 0 :(得分:8)

因为在Python 2中,所有二进制数据都表示为字符串。 str类型基本上只是一个字节序列。

在Python 3中,基本str类型是unicode值(Python 2中为unicode()),Python 2 str类型已重命名为bytes,并且a2b_hex函数输出字节:

>>> import binascii
>>> binascii.a2b_hex('48656c6c6f20576f726c6421')
b'Hello World!'