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

为什么十六进制5D在bytearray中被表示为bytearray(b']')?

十六进制值5D转为bytearray显示为bytearray(b']')的原理解答

这个现象确实和ASCII编码直接相关,具体逻辑如下:

底层逻辑

  • 十六进制值0x5D对应的十进制值为93,查阅ASCII编码表可知,十进制93对应的可打印字符就是]
  • bytearray存储的本质是原始字节数值,Python打印bytes、bytearray这类字节对象时,会默认对符合ASCII规则的字节做可读性优化,优先显示对应字符而非十六进制转义符

Python对全ASCII字符的处理规则

Python输出字节序列的字符串表示时,会对每个字节按如下规则处理:

  • 若字节值落在 ASCII可打印范围(十进制32~126) 内:直接显示为对应的ASCII字符

    你遇到的0x5D就属于这个区间,因此显示为]而不是\x5d

  • 若字节值是 ASCII控制字符(十进制0~31、127):显示为十六进制转义格式,比如换行符对应的0x0A会显示为\x0a
  • 若字节值大于127(非ASCII字节):同样显示为十六进制转义格式,比如0xE4会显示为\xe4

验证代码示例

你可以通过以下代码验证上述规则:

# 用十六进制值构造bytearray
b = bytearray([0x5D])
print(b)  # 输出:bytearray(b']')

# 查看字节对应的十进制值
print(int.from_bytes(b, byteorder='big'))  # 输出:93

# 查看十进制值对应的ASCII字符
print(chr(93))  # 输出:]

如果需要强制查看字节的十六进制原始表示,可以调用hex()方法:

print(bytearray([0x5D]).hex())  # 输出:5d

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:45:01