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

Python中bytes字面量如何表示?为何b'5QUU'与十六进制转义bytes相等

Python bytes字面量表示规则与相关问题解答

1. bytes字面量的表示规则

Python的bytes字面量以b作为前缀标识,本质是0~255范围的字节序列,支持两种表示方式:

  • 属于可打印ASCII范围(0x20~0x7E的可见字符,以及换行、制表符等可转义的ASCII控制符)的字节,可以直接写对应的字符表示
  • 任意字节都可以用\xHH格式的十六进制转义表示,其中HH是两位十六进制数,不管对应字节是否可打印都可以用这种形式
    注意:bytes字面量中直接书写的字符只能属于ASCII范围,非ASCII字符无法直接写入,需要通过字符串编码或者十六进制转义的方式生成。

2. 为什么b'5QUU' == b'\x35\x51\x55\x55'返回True

把第二个字面量的十六进制转义逐个转成ASCII对应字符就能明白:

  • \x35的十进制值为53,对应ASCII字符'5'
  • \x51的十进制值为81,对应ASCII大写字母'Q'
  • \x55的十进制值为85,对应ASCII大写字母'U'

所以b'\x35\x51\x55\x55'本质就是b'5' + b'Q' + b'U' + b'U',和左边的b'5QUU'是完全相同的字节序列,只是写出来的形式不同,所以相等判断返回True。Python默认显示bytes时,只要字节对应可打印ASCII字符就会显示字符,否则才显示十六进制转义,这只是显示策略的区别,不影响字节本身的值。


3. 查看同一个bytes对象的多种表示形式

可以通过内置方法和简单的自定义逻辑得到不同形式的表示:

  • 查看Python默认的混合表示:直接打印变量或者在交互环境输出变量即可
demo_b = b'5QUU\x00\xff'
print(demo_b) # 输出:b'5QUU\x00\xff'
  • 查看连续/分隔格式的十六进制字符串:使用hex()方法
print(demo_b.hex()) # 输出无分隔的十六进制串:3551555500ff
print(demo_b.hex(' ')) # 输出空格分隔的十六进制串:35 51 55 55 00 ff
  • 查看每个字节的十进制整数值:直接转成list即可
print(list(demo_b)) # 输出:[53, 81, 85, 85, 0, 255]
  • 强制所有字节都用\x转义形式表示:自定义格式化拼接即可
full_hex_repr = "b'" + ''.join(f'\\x{byte:02x}' for byte in demo_b) + "'"
print(full_hex_repr) # 输出:b'\x35\x51\x55\x55\x00\xff'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:45:03