在字符串轉換上,python2和python3是不一樣的,在查看一些python2的腳本時候,老是遇到字符串與hex之間之間的轉換出現問題,記錄一下解決方法。html
1. 在Python2.7.x上,hex字符串和bytes之間的轉換是這樣的:python
>>> a = 'aabbccddeeff' >>> a_bytes = a.decode('hex') >>> print(a_bytes) b'\xaa\xbb\xcc\xdd\xee\xff' >>> aa = a_bytes.encode('hex') >>> print(aa) aabbccddeeff >>>
2. 在python 3環境上,由於string和bytes的實現發生了重大的變化,這個轉換也不能再用encode/decode完成,而是利用bytes.fromhex()進行轉換。spa
2.1 在python3.5以前,這個轉換的其中一種方式是這樣的,利用bytes.fromhex()加單個字符轉換code
>>> a = 'aabbccddeeff' >>> a_bytes = bytes.fromhex(a) >>> print(a_bytes) b'\xaa\xbb\xcc\xdd\xee\xff' >>> aa = ''.join(['%02x' % b for b in a_bytes]) >>> print(aa) aabbccddeeff >>>
2.2 到了python 3.5以後,直接用bytes.fromhex便可完成轉換htm
>>> a = 'aabbccddeeff' >>> a_bytes = bytes.fromhex(a) >>> print(a_bytes) b'\xaa\xbb\xcc\xdd\xee\xff' >>> aa = a_bytes.hex() >>> print(aa) aabbccddeeff >>>
參考連接:https://www.cnblogs.com/japhasiac/p/7739846.htmlblog