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

将整数集合转为十六进制并通过串口发送的最优方法

最优转换方法:直接生成原始二进制字节

你的当前实现生成的是ASCII编码的十六进制文本字符串(带空格),这不仅会增加串口传输的字节数(原本5个字节变成14个),还做了多余的字符串拼接和编码操作,完全不是最优方案。

串口通信通常需要发送原始二进制字节,直接用Python内置的bytes()函数就能把整数元组转换成可发送的字节对象,这是最高效、最简洁的方式:

frame_tuple = (85, 1, 71, 0, 157)
serial_bytes = bytes(frame_tuple)
# 输出: b'\x55\x01G\x00\x9d'

这个结果里的G是十进制71对应的ASCII字符(十六进制0x47),Python在打印字节对象时会自动把可打印的ASCII字符显示为对应的字符,不可打印的显示为十六进制转义序列,但本质上就是你需要的0x55 0x01 0x47 0x00 0x9D这5个原始字节,直接传给串口发送函数即可。


特殊情况:如果设备要求发送ASCII格式的十六进制文本

如果你的串口设备确实需要接收不带空格的十六进制文本(比如b'550147009d'),可以用更高效的方式生成:

serial_bytes = b''.join(f'{i:02x}'.encode() for i in frame_tuple)
# 输出: b'550147009d'

但这种场景非常少见,绝大多数串口设备都是直接接收原始二进制字节,优先用第一种方法。

内容的提问来源于stack exchange,提问作者Paweł Pietraszko

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 22:07:08