2012-05-30 53 views
14

Tôi đang nghĩ binascii là mô-đun mà tôi đang tìm kiếm, nhưng tôi không thể có được kết quả chính xác mà tôi đang tìm kiếm.Python: Cách chuyển đổi chuỗi chứa byte hex thành chuỗi hex

Đây là những gì tôi muốn làm. Tôi muốn chuyển đổi:

>>> s = '356a192b7913b04c54574d18c28d46e6395428ab' 
>>> print len(s) 
40 

để

>>> hs = '\x35\x6a\x19\x2b\x79\x13\xb0\x4c\x54\x57\x4d\x18\xc2\x8d\x46\xe6\x39\x54\x28\xab' 
>>> print len(hs) 
20 

Bất kỳ Pythonistas bí quyết của một mát mẻ (hoặc, thẳng thắn, chức năng) cách để làm điều này?

Trả lời

18

giải pháp dễ nhất bằng Python 2.x:

>>> s = '356a192b7913b04c54574d18c28d46e6395428ab' 
>>> s.decode("hex") 
'5j\x19+y\x13\xb0LTWM\x18\xc2\x8dF\xe69T(\xab' 

Dòng thứ hai là tương đương với

binascii.a2b_hex(s) 
+0

Yep, đó là chính xác những gì tôi đang tìm kiếm cho, và nó đang ở trong lớp dây chờ tôi. Cảm ơn, Sven! –

3

Với binascii mô-đun:

>>> from binascii import unhexlify 
>>> s = '356a192b7913b04c54574d18c28d46e6395428ab' 
>>> unhexlify(s) 
'5j\x19+y\x13\xb0LTWM\x18\xc2\x8dF\xe69T(\xab' 
+0

'unhexlify()' chỉ là một tên khác cho 'a2b_hex()' [binascii Documentation] (https://docs.python.org/2/library/binascii.html#binascii.a2b_hex) – Murmel

Các vấn đề liên quan