2013-05-29 49 views
1

這是從standard library documentation中對功能的描述。爲什麼binascii.a2b_hex()返回一個字符串?

binascii.a2b_hex(hexstr)

返回由十六進制字符串hexstr表示的二進制數據。這個函數是b2a_hex()的反函數。 hexstr必須包含偶數個十六進制數字(可以是大寫或小寫),否則會引發TypeError。

但是,下面的代碼示例打印出Hello World!

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

爲什麼print解釋二進制數據作爲字符串?究竟發生了什麼?

回答

8

因爲在Python 2中,所有二進制數據都表示爲字符串。 str類型基本上只是一個字節序列。

在Python 3,基本str類型是Unicode值(unicode()在Python 2)和Python的2 str類型已被重命名爲bytes代替,並且a2b_hex功能輸出字節:

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

謝謝,完美地回答我的問題。 :) – Ayrx

相關問題