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

如何用Python struct模块交错合并两个等长无符号短整型bytearray?

交错合并存储16位无符号整数的bytearray数组

方法一:使用struct模块(符合你的思路)

先将两个bytearray解包为16位无符号整数列表,交错合并后再打包回bytearray:

import struct

# 假设bytearray1、bytearray2为已有的等长字节数组,存储小端序16位无符号整数
element_count = len(bytearray1) // 2  # 每个16位值占2字节,计算元素总数
fmt = f'<{element_count}H'  # <表示小端序,H对应无符号短整数(16位)

# 解包字节数组为整数列表
u_values = struct.unpack(fmt, bytearray1)
v_values = struct.unpack(fmt, bytearray2)

# 交错合并整数列表
combined_values = [val for pair in zip(u_values, v_values) for val in pair]

# 打包回目标bytearray
bytearray3 = struct.pack(f'<{len(combined_values)}H', *combined_values)

如果原数组是大端序存储,只需把格式字符串中的<换成>即可。

方法二:直接操作字节块(更高效)

因为每个16位值固定占2字节,可直接按2字节为单位交错拼接,跳过解包/打包步骤:

bytearray3 = bytearray()
# 按2字节步长遍历原数组
for i in range(0, len(bytearray1), 2):
    # 依次添加bytearray1的当前2字节、bytearray2的对应2字节
    bytearray3.extend(bytearray1[i:i+2])
    bytearray3.extend(bytearray2[i:i+2])

两种方法对比

  • struct方法逻辑清晰,适合需要先对16位整数做运算再合并的场景;
  • 直接字节操作避免了类型转换开销,合并纯字节数据时效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 16:05:33