You need to enable JavaScript to run this app. Python中如何将bytes转换为64位int后再转回原bytes?
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何将bytes转换为64位int后再转回原bytes?

无损实现bytes与int往返转换的方法

核心问题定位

你之前无法转回正确bytes的根本原因,是没有对齐int.to_bytes()的参数规则:

  • 该方法的length参数不是可随意设置的固定值,必须和最初执行int.from_bytes()转换时的原始bytes长度完全匹配
  • 转换、转回两个环节的byteorder(字节序)、signed(有符号标记)参数必须完全一致,不能出现配置偏差

通用无损转换流程

匹配你现有转换逻辑的可直接运行的实现:

  • 提前保存原始bytes的实际长度,作为转回时的length入参
  • 转回环节保持和原转换一致的小端序配置,默认无符号整数即可
    示例代码:
# 任意输入的待处理bytes数据x
x = b'\xde\xad\xbe\xef'
# 你现有逻辑:将bytes转成整数
num = int.from_bytes(x, "little")
# 正确转回原bytes的写法
restored_x = num.to_bytes(
    length=len(x),
    byteorder="little",
    signed=False
)
# 校验结果
print(restored_x == x)  # 输出True,与原内容完全一致

强制转64位整数的特殊场景处理

如果业务要求中间值必须为严格64位整数(即固定8字节长度),需提前明确边界规则:

只要原始bytes长度超过8字节,该流程下无法实现无损失转回原bytes——将超长bytes转成64位整数时,超出范围的高位信息会被直接截断丢失,无复原可能。

仅当原始bytes长度≤8字节时,才能在转成64位整数后实现无损转回:

# 长度小于8的原始bytes
x = b'\x01\x02'
# 转成固定64位小端整数:自动在高位补零至8字节长度
num_64bit = int.from_bytes(x, "little")
# 转回时结合记录的原始长度截断补零的部分
restored_x = num_64bit.to_bytes(
    length=8,
    byteorder="little",
    signed=False
)[:len(x)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 13:54:10