You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中生成十六进制列表为何返回字符串列表?

问题解析与解决

核心原因:hex()函数的本质

Python的hex()函数作用就是将整数转换为十六进制格式的字符串,不管是单独调用还是放在列表推导式里,它的返回值都是字符串类型。你看到的['0xc1', '0x50', '0x40']是这个函数的正常输出,和列表推导式无关。

关于十六进制字面量的说明

你直接写[0xc1, 0x50, 0x40]时,0xc1这类写法是Python的十六进制整数字面量——它本身就是整数类型,Python在存储和打印时会自动以十进制形式展示,所以输出结果是[193, 80, 64]。

你的代码冗余点

你的代码做了没必要的步骤:

  • 先给原列表元素加0x得到newlist,再用int(item, 16)转整数——其实int('C1', 16)本身就能直接识别不带0x的十六进制字符串,不需要额外拼接前缀。
  • 后续又用hex()把整数转回字符串,这就是最终得到字符串列表的直接原因。

对应需求的正确写法

需求1:得到整数列表(和[0xc1, 0x50, 0x40]等价)

直接将原列表元素转为整数即可:

original_list = ['C1', '50', '40']
int_list = [int(item, 16) for item in original_list]
print(int_list)  # 输出: [193, 80, 64]

需求2:得到十六进制格式的字符串列表

如果确实需要字符串形式的十六进制值,代码可以简化:

original_list = ['C1', '50', '40']
hex_str_list = [hex(int(item, 16)) for item in original_list]
# 或者用f-string更直观:[f"0x{item.lower()}" for item in original_list]
print(hex_str_list)  # 输出: ['0xc1', '0x50', '0x40']

内容的提问来源于stack exchange,提问作者HexBlunder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 05:22:27