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

Python3中如何提取两字节的11个最高有效位并转十进制?

提取两个字节中11个最高有效位的十进制值

可以通过以下简洁步骤实现需求:

  1. 读取串口字节:用PySerial的read(2)方法读取两个字节,得到bytes对象。
  2. 合并为16位整数:将两个字节按大端(Big-Endian)顺序转换为整数,确保第一个字节作为高位、第二个作为低位。
  3. 右移保留高11位:两个字节共16位,要保留11个最高有效位,只需将合并后的整数右移5位(16-11=5),自动丢弃低5位,剩下的就是目标十进制值。

示例代码

import serial

# 初始化串口(根据你的实际端口、波特率修改)
ser = serial.Serial('COM3', 9600, timeout=1)

# 读取两个字节
data = ser.read(2)
if len(data) == 2:
    # 按大端顺序合并为整数
    combined = int.from_bytes(data, byteorder='big')
    # 右移5位提取11个最高有效位
    result = combined >> 5
    print(result)  # 示例输入下输出242
else:
    print("未读取到足够的字节")

ser.close()

示例验证

针对输入b'\x1e@':

  • 转换为大端整数是0x1E40(十进制7744)
  • 右移5位计算:7744 >> 5 = 242,与预期结果完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 22:42:11