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

Python to_bytes返回显示不符,如何获取全\x十六进制格式字节?

为什么to_bytes的显示结果和预期不一致?

核心原因

你看到的b'\x03f'和你期望的b'\x03\x66'本质是同一个bytes对象,只是Python的显示规则不同:

  • 当字节值对应可打印的ASCII字符(比如0x66对应ASCII的'f'),Python会直接显示该字符,而非\x加两位十六进制数。
  • 不可打印的字节(比如0x00、0x0c)才会用\x转义格式显示。

验证两者等价

可以用代码直接验证:

i = 870
b1 = i.to_bytes(2, byteorder="big")
b2 = b'\x03\x66'
print(b1 == b2)  # 输出 True
print(list(b1))  # 输出 [3, 102],102就是十六进制0x66的十进制值

如何得到全\x格式的字符串表示

如果你只是想要把bytes对象转换成全\x转义格式的字符串(而非改变实际字节内容),可以自己写个格式化函数:

def format_bytes_to_hex_str(byte_data):
    hex_parts = [f'\\x{byte:02x}' for byte in byte_data]
    return f"b'{''.join(hex_parts)}'"

# 示例使用
i = 870
result = i.to_bytes(2, byteorder="big")
print(format_bytes_to_hex_str(result))  # 输出 b'\x03\x66'

注意:这个函数返回的是字符串类型,不是bytes对象。实际的bytes对象本身没有“格式”之分,只是Python在控制台显示时会采用更易读的方式(优先显示可打印字符)。

内容的提问来源于stack exchange,提问作者Pierre de Chambure

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 13:25:33