先写一下python2是如何编写:
pw = '111111'
pw = ''.join([chr(int('{:08b}'.format(ord(x))[::-1], 2))for x in pw])
print pw
结果:
"\x8c\x8c\x8c\x8c\x8c\x8c"
我们看到,现将字符串pw遍历字符后,首先转换为2进制,再准换为16进制字符。
但是此方法在python3会出错,原因在于bytes类型
修改方法
import binascii
pw = b'111111'
temp = b''
for x in pw:
temp += binascii.a2b_hex('%02x' % int('{:08b}'.format(x)[::-1], 2))
pw = temp
print ("pw2:", pw)
结果:
b'\x8c\x8c\x8c\x8c\x8c\x8c'