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
相关产品推荐
相关产品推荐

