【Python】bytes和hex字符串之間的相互轉換。


反復在幾個環境上折騰碼流的拼裝解析和可讀化打印,總是遇到hex字符串和bytes之間的轉換,記錄在這里吧。

1. 在Python2.7.x上(更老的環境真心折騰不起),hex字符串和bytes之間的轉換是這樣的:

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完成了。

2.1 在python3.5之前,這個轉換的其中一種方式是這樣的:

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 >>>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM