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

Python中bytes索引与hex方法输出为何存在差异?

问题解答

你的结构体按网络字节序(大端)的格式化是正确的,两种输出只是同一个字节的不同显示形式,原因如下:

  • bytes对象的切片/索引转成字符串时,遵循Python的显示规则:

    • 如果字节对应可打印ASCII字符(ASCII码范围0x20-0x7E),直接显示该字符;
    • 否则用十六进制转义格式\xXX表示。
      你的第二个字节是0x43,对应ASCII字符'C',所以bs[1:2]打印为b'C';第一个字节0x80不在可打印ASCII范围内,所以显示b'\x80'。
  • bytes.hex(' ')方法会直接输出每个字节对应的两位十六进制字符串,不管是否可打印,因此0x80输出"80",0x43输出"43",最终显示80 43。

你可以用以下代码验证两者是同一个值:

print(bs[1] == 0x43)  # 输出True
print(ord('C') == 0x43)  # 输出True

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 17:53:16