Python 为ord()指定多个字符

Python 为ord()指定多个字符,python,python-3.x,Python,Python 3.x,有没有一个更简单的方法来做下面的事情,我发现自己一直在做 >>> hex(ord('H')) '0x48' >>> hex(ord('e')) '0x65' >>> hex(ord('l')) '0x6c' >>> hex(ord('p')) '0x70' 我想是这样的: >>> ords = lambda s: [hex(ord(c)) for c in s] >>> ords('He

有没有一个更简单的方法来做下面的事情,我发现自己一直在做

>>> hex(ord('H'))
'0x48'
>>> hex(ord('e'))
'0x65'
>>> hex(ord('l'))
'0x6c'
>>> hex(ord('p'))
'0x70'
我想是这样的:

>>> ords = lambda s: [hex(ord(c)) for c in s]
>>> ords('Help')
['0x48', '0x65', '0x6c', '0x70']

但是有什么内置的东西我可以用来做这个吗?或者我是否需要使用
struct
模块进行超过一个字节的打印/转换?

使用您编写的函数,但要使其成为正确的
def
。然后你可以把它放在方便的地方,比如一个文件


顺便说一句,因为它总是十六进制的,所以您可能希望通过使用
格式(ord(c),'x')

来去掉
0x
前缀,您实际上不需要
lambda
。你可以在s中为c做[code>ords=[hex(ord(c)]。你的最终目标是什么?您也可以直接访问
ords=b'Help'
。现在
ords[0]
72
(又称
0x48
)。@larsks这是在
gdb
中编写一个帮助程序,在这里我经常有字符串,我需要查看它们在寄存器或内存地址中的外观(即十六进制)。字符串在概念上在字节级别上没有任何特定的“外观”。这取决于文本编码。Python使用的内部表示不一定对您有用或感兴趣。通过获取字符串的这种“视图”,而不是查看单个字符,还不清楚您希望解决什么问题。你应该从描述你实际试图解决的实际问题开始,包括动机——你现有的解决问题的方法是次要的@samuelbrody1249我刚才在您提到的评论中注意到,您将使用它来分析内存中的数据。问题是,这取决于它们在内存中的编码方式。此解决方案可能适用于ASCII,也可能适用于UTF-32,但不适用于UTF-8、CP1254等。
def ords(s):
    """
    Return the hex codepoint for each character in string "s", in a list.

    >>> ords('Help')
    ['0x48', '0x65', '0x6c', '0x70']
    """
    return [hex(ord(c)) for c in s]