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

Python使用int.to_bytes方法整数转bytes输出异常问题咨询

问题原理说明

这一现象和int.to_bytes转换逻辑无关,是Python对bytes对象的默认展示规则导致的,实际转换得到的二进制值完全符合你的预期。

核心规则

Python输出bytes对象的字符串形式时,会对每个字节做如下判断:

  • 如果字节值对应ASCII范围内的可打印普通字符,直接显示为对应字符
  • 如果字节值对应ASCII范围内的标准转义控制字符,显示为对应的转义序列(比如\n、\t)
  • 其余不可打印、无标准转义的字节,才会显示为\xHH格式的十六进制表示

对应测试用例解释

  • 整数31对应的ASCII值是不可打印的控制字符,没有对应标准转义序列,所以直接显示为b'\x1f',符合预期
  • 整数10对应的ASCII值是换行符,属于有标准转义序列的控制字符,Python会优先显示为b'\n',但它和你预期的b'\x0a'完全等价,执行b'\n' == b'\x0a'结果为True
  • 整数50对应的ASCII值是可打印字符2,所以直接显示为b'2',和你预期的b'\x32'完全等价,执行b'2' == b'\x32'结果为True

查看十六进制原始值的方法

如果你需要统一查看所有字节的十六进制形式,可以调用bytes对象的hex()方法:

b1 = (10).to_bytes(1, 'big')
print(b1.hex()) # 输出 0a
b2 = (50).to_bytes(1, 'big')
print(b2.hex()) # 输出 32

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 17:18:02