python2和python3区别

bytes和hex字符串之间的相互转换

  • 在Python2.7.x上,hex字符串和bytes之间的转换是这样的:
>>> 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
>>>

在python 3环境上,因为string和bytes的实现发生了重大的变化,这个转换也不能再用encode/decode完成了

  • 在python3.5之前,这个转换的其中一种方式是这样的:
>>> 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
>>>
  • 到了python 3.5之后,就可以像下面这么干了:
>>> a = 'aabbccddeeff'
>>> a_bytes = bytes.fromhex(a)
>>> print(a_bytes)
b'\xaa\xbb\xcc\xdd\xee\xff'
>>> aa = a_bytes.hex()
>>> print(aa)
aabbccddeeff
>>>

引用 from Crypto.Cipher import AES

  • python2.7.x 是 from Crypto.Cipher import AES
  • python3 是from Cryptodome.Cipher import AES

参考: https://github.com/Legrandin/pycryptodome

你可能感兴趣的:(python2和python3区别)