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

如何在bytearray中每3字节后添加空字节?附NumPy高效方案

需求与问题

我需要在bytearray的每3个字节后添加一个空字节。通常我的bytearray以4字节为一组(后续可拆分为多个uint32),但有时会遇到3字节一组的情况,无法直接传入相关函数处理。由于数据量约100万字节,需要高效实现该操作。

当前使用np.frombytes()时遇到的问题:

data #(bytearray, 数据为3字节或4字节一组)
if buffer_size == 3: # 已知该条件
    pass # 此处需扩展bytearray,添加空字节
new_array = np.frombytes(data, dtype=np.uint32) # 4字节时正常,3字节时失败
val1, val2 = new_array//256, new_array%256
高效解决方案

针对np.frombuffer调整数据类型,实现直接读取并自动重塑,无需手动插入空字节:

val_list = np.frombuffer(data, dtype=(np.uint8, buffer_size))
# 如需将3字节组转换为数值,可执行以下计算
# val_list = val_list[:, 0]*(256*256) + val_list[:, 1]*256 + val_list[:,2]
旧替代方案(速度较慢)

通过将bytearray拆分为字符串规避问题,但运行效率低,不适合大数据量场景:

new_array = np.array(data.hex(" ", buffer_size).upper().split(" "))
new_array = np.vectorize(int)(new_array, 16)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 10:24:52