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

Python中bytearray的0x44显示为D而非\x44的原因咨询

问题:bytearray输出中0x44显示为字符D而非\x44的原因?

复现代码

data = bytearray()
data.append(0xCC)
data.append(0x00)
data.append(0x44)
data.append(0x01)
data.append(0x00)
data.append(0xDD)
data.append(0xEE)
data.append(0x01)

疑问

我预期的bytearray输出为bytearray(b'\xcc\x00\x44\x01\x00\xdd\xee\x01'),但实际得到的输出是bytearray(b'\xcc\x00D\x01\x00\xdd\xee\x01'),想请教为何0x44会显示字符D而非十六进制表示的\x44?


解答

这是Python对字节串的默认显示规则导致的:

  • 当字节值对应ASCII表中的可打印字符(比如0x44的十进制是68,正好对应大写字母D的ASCII码),Python会直接显示该字符,代替十六进制转义格式\xXX
  • 对于不可打印的控制字符(比如0x00、0xCC、0xDD这类不在可打印ASCII范围内的字节),才会用\xXX的十六进制形式显示

你不用纠结显示形式,bytearray的实际内容和你预期的完全一致。可以通过以下代码验证字节值的正确性:

# 验证第3个字节(索引为2)的值
print(data[2])       # 输出68,对应0x44的十进制
print(hex(data[2]))  # 输出0x44,确认字节值正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 21:18:13