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

Python串口开发:如何将14位整数拆分为字节创建bytearray?

解决14位整数拆分为字节数组的问题

bytearray要求每个元素必须是0-255范围内的单字节值,14位整数超出这个范围,因此需要将其拆分为两个字节(高字节和低字节),具体实现分两种方式:

方法1:手动位运算拆分

根据微控制器要求的字节序(大端/小端)进行拆分:

大端序(高位字节优先发送)

dataCRC = 8444
length = 0  # 替换为你的实际length值
buffer = [128, 32, length]

# 拆分14位整数
high_byte = dataCRC >> 8  # 提取高6位(自动补零至8位),结果为32
low_byte = dataCRC & 0xFF  # 提取低8位,结果为252

buffer.extend([high_byte, low_byte])
barray = bytearray(buffer)

小端序(低位字节优先发送)

仅调整两个字节的顺序即可:

buffer.extend([low_byte, high_byte])

方法2:使用struct模块(更简洁)

利用Python内置的struct模块直接将整数打包为指定字节序的字节流,无需手动计算:

import struct

dataCRC = 8444
length = 0  # 替换为你的实际length值
buffer = [128, 32, length]

# 按大端序打包为2字节('H'表示无符号16位整数,'>'代表大端)
crc_bytes = struct.pack('>H', dataCRC)
buffer.extend(crc_bytes)

barray = bytearray(buffer)

若需要小端序,将'>H'替换为'<H'即可。

验证说明

8444的二进制表示为10000011111100,拆分后:

  • 大端序对应字节:00100000(十进制32)和11111100(十进制252)
  • 小端序对应字节:11111100(十进制252)和00100000(十进制32)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 12:20:42