反覆在幾個環境上折騰碼流的拼裝解析和可讀化打印,老是遇到hex字符串和bytes之間的轉換,記錄在這裏吧。python
1. 在Python2.7.x上(更老的環境真心折騰不起),hex字符串和bytes之間的轉換是這樣的:spa
1 >>> a = 'aabbccddeeff' 2 >>> a_bytes = a.decode('hex') 3 >>> print(a_bytes) 4 b'\xaa\xbb\xcc\xdd\xee\xff' 5 >>> aa = a_bytes.encode('hex') 6 >>> print(aa) 7 aabbccddeeff 8 >>>
2. 在python 3環境上,由於string和bytes的實現發生了重大的變化,這個轉換也不能再用encode/decode完成了。code
2.1 在python3.5以前,這個轉換的其中一種方式是這樣的:blog
1 >>> a = 'aabbccddeeff' 2 >>> a_bytes = bytes.fromhex(a) 3 >>> print(a_bytes) 4 b'\xaa\xbb\xcc\xdd\xee\xff' 5 >>> aa = ''.join(['%02x' % b for b in a_bytes]) 6 >>> print(aa) 7 aabbccddeeff 8 >>>
2.2 到了python 3.5以後,就能夠像下面這麼幹了:字符串
1 >>> a = 'aabbccddeeff' 2 >>> a_bytes = bytes.fromhex(a) 3 >>> print(a_bytes) 4 b'\xaa\xbb\xcc\xdd\xee\xff' 5 >>> aa = a_bytes.hex() 6 >>> print(aa) 7 aabbccddeeff 8 >>>