如何将字符串字符转为十六进制元组?遇TypeError错误求助
问题描述
我有如下字符串:
Hello
使用list()将其拆分为字符列表:
MS = list(MS)
得到结果:
['H', 'e', 'l', 'l', 'o']
我希望将其转换为如下格式的十六进制元组:
p = (0x48, 0x65, 0x6c, 0x6c, 0x6f)
尝试使用以下代码转换时失败:
p = tuple(hex(x) for x in MS)
报错信息:
TypeError: 'str' object cannot be interpreted as an integer
请问该如何实现?
解决方案
报错原因是hex()函数需要传入整数,而你遍历的是字符串类型的字符(比如'H'),无法直接转换。需要先用ord()函数把每个字符转换成对应的ASCII整数,再传入hex()生成十六进制格式字符串。修改后的代码如下:
MS = "Hello" char_list = list(MS) p = tuple(hex(ord(c)) for c in char_list) print(p)
执行后输出:
('0x48', '0x65', '0x6c', '0x6c', '0x6f')
如果只需要数值等价的整数元组(Python中0x48和72是同一个值),可以直接用ord()结果组成元组:
p = tuple(ord(c) for c in char_list) print(p) # 输出 (72, 101, 108, 108, 111)
内容的提问来源于stack exchange,提问作者Mohammed Farttoos
相关产品推荐
相关产品推荐

