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

为什么Python中list(bytestring)会返回十进制值的列表?

问题核心原理说明

Python 中的bytes类型本质是由0~255范围内整数组成的不可变序列,每个整数刚好对应1字节(8位二进制)的数值。我们平时看到的b'hello'这类打印形式只是Python为了提升可读性做的语法优化:如果字节的数值对应ASCII可打印字符,就显示为字符形式,不可打印的内容会显示为\x加两位十六进制编码的形式。

你调用list(b)时得到十进制整数序列,原因有两个:

  • 遍历bytes对象时,默认返回的就是每个字节对应的原始整数取值
  • Python 展示整数时默认使用十进制格式,所以最终输出的是十进制列表

这两者本质完全等价,比如列表里的104就对应单字节01101000,刚好是ASCII字符h的编码值。


示例验证

你可以通过以下代码验证对应关系:

s = 'hello'
b = s.encode()

# 直接打印bytes对象会输出可读性更强的字符形式
print(b)  # 输出:b'hello'

# 取bytes单个元素返回的就是对应整数
print(b[0])  # 输出:104

# 整数和字符、十六进制、二进制的对应关系
print(chr(104))  # 输出:h
print(hex(104))  # 输出:0x68
print(bin(104))  # 输出:0b1101000

如果你需要得到字节的十六进制表达形式,可以按如下方式处理:

hex_byte_list = [f"0x{byte:02x}" for byte in b]
print(hex_byte_list)  # 输出:['0x68', '0x65', '0x6c', '0x6c', '0x6f']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:09:01