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

Python串口接收MCU的32位十六进制字节串,提取16位值

解决方法

你需要把串口接收的字节串转换成十六进制字符串,分割出两个16位的片段后转成整数,再进行位运算得到RGB值。以下是修改后的完整代码:

# 假设你已经导入了serial和PIL库
s = serialPort.readline()
# 去除首尾的换行/空白字节,转成字符串
hex_str = s.strip().decode('utf-8')
# 分割为两个4字符的十六进制片段
hex_f6f3 = hex_str[:4]
hex_f6f2 = hex_str[4:]

# 把十六进制字符串转为整数
F6F3 = int(hex_f6f3, 16)
F6F2 = int(hex_f6f2, 16)

# 计算RGB值并设置像素(注意第二个像素的坐标别和第一个重复)
r1 = (F6F3 & 0xF800) >> 8
g1 = (F6F3 & 0x07E0) >> 3
b1 = (F6F3 & 0x001F) << 3
im.putpixel((x, y), (r1, g1, b1))

r2 = (F6F2 & 0xF800) >> 8
g2 = (F6F2 & 0x07E0) >> 3
b2 = (F6F2 & 0x001F) << 3
im.putpixel((x+1, y), (r2, g2, b2))  # 示例坐标,根据需求调整

关键步骤说明:

  • s.strip():清除字节串首尾的换行符、空格等无用内容,得到干净的b'F6F3F6F2'。
  • .decode('utf-8'):把字节串转换成普通字符串'F6F3F6F2',方便分割操作。
  • hex_str[:4]/hex_str[4:]:将8位十六进制字符串拆分为两个4位片段,对应两个16位数值。
  • int(hex_str, 16):把十六进制字符串转为十进制整数,才能执行后续的位运算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 15:54:25