将字符串中的所有字符转换为python中的ascii hex

Ech*_*age 7 python ascii

只是寻找可以将所有字符从普通字符串(所有英语字母字母)转换为python中的ascii hex的python代码.我不确定我是否以错误的方式问这个问题,因为我一直在寻找这个,但似乎无法找到这个.

我必须完成答案,但我会喜欢一些帮助.

只是澄清一下,从'地狱'到'\ x48\x65\x6c\x6c'

小智 6

根据 Jon Clements 的回答,尝试使用 python3.7 上的代码。我有这样的错误:

>>> s = '1234'    
>>> hexlify(s)    
Traceback (most recent call last):    
  File "<pyshell#13>", line 1, in <module>    
    hexlify(s)    
TypeError: a bytes-like object is required, not 'str'
Run Code Online (Sandbox Code Playgroud)

通过以下代码解决:

>>> str = '1234'.encode()    
>>> hexlify(str).decode()   
'31323334'
Run Code Online (Sandbox Code Playgroud)


mgi*_*son 5

我想''.join(r'\x{02:x}'.format(ord(c)) for c in mystring)会做的伎俩......

>>> mystring = "Hello World"
>>> print ''.join(r'\x{02:x}'.format(ord(c)) for c in mystring)
\x48\x65\x6c\x6c\x6f\x20\x57\x6f\x72\x6c\x64
Run Code Online (Sandbox Code Playgroud)

  • 我认为'''.join([r'\ x%x'%ord(c)for c in mystring])`至少可以回到python2.4 ......(每当引入list-comps时) - 一般来说,从性能的角度来看,与Cpython中的生成器表达式相比,加入列表理解总是更好......所以除了有点丑陋的风格之外,使用它是没有害处的. (2认同)
  • @mgilson 恐怕原始答案和评论都不正确。您的十六进制格式说明符应该是 %02x 或 {0:02x},否则序号值小于 16 的字符将生成无效的 \x 转义序列,它只是一个十六进制数字! (2认同)

Jon*_*nts 5

就像是:

>>> s = '123456'
>>> from binascii import hexlify
>>> hexlify(s)
'313233343536'
Run Code Online (Sandbox Code Playgroud)