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

为何使用不同byteorder转换单字节数据时结果一致?

数字与字节转换的疑问

数字转字节示例

print(int.to_bytes(65, length=1, byteorder='big')) # 该代码将数字转换为对应字符

结果:

A

字节转整数的疑问

使用以下代码转换字节为整数时,即使指定不同的byteorder,结果均为65,请问原因是什么?

print(int.from_bytes(b'A', byteorder='big', signed=True))
print(int.from_bytes(b'A', byteorder='little', signed=True))

结果:

65
65

原因解释

字节序(byteorder)是用来定义多字节数据的字节排列顺序的——只有当你处理2字节、4字节这类长度大于1的字节串时,字节的先后顺序才会影响解析结果。

但你现在转换的是单个字节(b'A'仅包含1个字节),单个字节根本不存在“排列顺序”的问题,不管指定大端(big)还是小端(little),它对应的就是ASCII值65,结果自然不会变化。

给你举个多字节的例子就能明白差异:比如把整数258转成2字节的字节串,大端和小端的输出完全不同:

# 大端:高位字节放在前面
print(int.to_bytes(258, length=2, byteorder='big'))  # 输出 b'\x01\x02'
# 小端:低位字节放在前面
print(int.to_bytes(258, length=2, byteorder='little'))  # 输出 b'\x02\x01'

这时再用from_bytes解析,指定不同字节序就会得到不一样的结果:

print(int.from_bytes(b'\x01\x02', byteorder='big'))  # 得到258
print(int.from_bytes(b'\x01\x02', byteorder='little'))  # 得到513

简单说:只有字节串长度大于1时,byteorder参数才会生效,单字节数据不受这个参数影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 00:50:22