Python版本:3.7.2
我需要将类似Øâþ ÿþ !Zk2ìm "Ï"À>q úÞ
的ASCII字符串转换为十六进制,在这种情况下为d8 e2 02 12 02 fe 01 20 9b 10 20 20 03 ff 07 fe 20 20 21 5a 6b 32 ec 17 6d 20 0e 22 cf 22 c0 3e 71 20 02 20 03 fa de
。我找到了几种在Python 2上执行此操作的解决方案,但是找不到在Python 3上执行此操作的任何方法。
总结:预期行为是 ASCII到HEX ,如下所示:
Øâþ ÿþ !Zk2ìm "Ï"À>q úÞ
TO d8 e2 02 12 02 fe 01 20 9b 10 20 20 03 ff 07 fe 20 20 21 5a 6b 32 ec 17 6d 20 0e 22 cf 22 c0 3e 71 20 02 20 03 fa de
。
我什至检查了https://www.rapidtables.com/convert/number/ascii-to-hex.html并发现它可以工作,但是我无法在Python 3中实现它。
答案 0 :(得分:2)
您可以使用以下代码:
print(*[hex(ord(letter))[2:] for letter in 'Øâþ ÿþ !Zk2ìm "Ï"À>q úÞ'])
给出以下输出:
d8 e2 fe 20 10 20 20 ff fe 20 20 21 5a 6b 32 ec 6d 20 e 22 cf 22 c0 3e 71 20 20 fa de
ord()
-获取ASCII码,
hex()
-从int获取十六进制,
[2:]
-在每个数字中省略0x
。
编辑
稍作修改的版本(获取0e
而不是e
):
string = 'Øâþ ÿþ !Zk2ìm "Ï"À>q úÞ'
print(*['{:02x}'.format(ord(letter)) for letter in string])
答案 1 :(得分:1)
使用ord()
:
s = 'Øâþ ÿþ !Zk2ìm "Ï"À>q úÞ'
bytes = bytearray(ord(char) for char in s)
print(bytes)
输出:
bytearray(b'\xd8\xe2\xfe \x10 \xff\xfe !Zk2\xecm \x0e"\xcf"\xc0>q \xfa\xde')
话说回来,我不能完全匹配您的输出,因为您复制并粘贴了一个垃圾字符:
print(''.join(chr(char) for char in bytes)) # Øâþ ÿþ !Zk2ìm "Ï"À>q úÞ