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

Python 3.7:如何将8字节倍数的bytes转为8字节有符号整数列表?

将bytes对象转换为8字节有符号整数列表(Python 3.7)

你之前用list(some_bytes)得到的是每个字节的单字节无符号整数,这是因为该方法会逐个拆分bytes中的每个字节,而非按8字节组拼接解析,所以才会出现“像4字节整数处理”的误解(实际是单字节处理)。

要实现按8字节有符号整数解析,直接用Python标准库的struct模块即可,它支持指定字节长度、符号性和字节序来解析bytes:

实现步骤

  1. 导入struct模块
  2. 选择字节序前缀:<表示小端字节序,>表示大端字节序,=表示本机字节序(需根据数据源的字节序确定)
  3. 用格式符q对应8字节有符号整数(int64)
  4. 计算解析数量:len(some_bytes) // 8(你的bytes长度是8的倍数,刚好整除)
  5. 用struct.unpack()解析后转成列表

代码示例

import struct

# 示例bytes对象(包含两个8字节有符号整数:-1 和 1,小端字节序)
some_bytes = b'\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x01'

# 生成格式字符串:小端字节序 + 对应数量的8字节有符号整数
count = len(some_bytes) // 8
fmt = f'<{count}q'

# 解析并转为列表
int_list = list(struct.unpack(fmt, some_bytes))
print(int_list)  # 输出: [-1, 1]

如果你的数据源是大端字节序,只需将格式前缀改为>即可:

fmt = f'>{count}q'

内容的提问来源于stack exchange,提问作者St.Antario

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 20:37:16