2013-02-15 74 views
0

我有以下代码:不兼容性在Python 3个功能(quote_from_bytes和unquote_to_bytes)结果

src = b'\x12\x34\x56\x78\x9a\xbc\xde\xf1\x23\x45\x67\x89\xab\xcd\xef\x12\x34\x56\x78\x9a' 
quoted = quote_from_bytes(src) 
print(quoted) 
unquoted = unquote_to_bytes(quoted) 
print(unquoted) 

我不明白,为什么print(unquoted)回报 b'\x124Vx\x9a\xbc\xde\xf1#Eg\x89\xab\xcd\xef\x124Vx\x9a'

代替b'\x12\x34\x56\x78\x9a\xbc\xde\xf1\x23\x45\x67\x89\xab\xcd\xef\x12\x34\x56\x78\x9a'

src为一个sha1哈希。

我使用Python 3.3版本

回答

1

Python不使用\xab转义码打印字节。该\x34字节,例如,显示为可打印4字符,而不是:

>>> print(b'\x34') 
b'4' 

这同样适用于可显示为ASCII字符,而不是在你的价值每隔字节; \x56打印为V\x78显示为x

这是正常的行为,该值仍然是相同的:

>>> b'\x34' == b'4' 
True 
+0

非常感谢你。这很明显。我需要一个娱乐=) 我想知道为什么不相反 – kden 2013-02-15 14:04:47