硬件模块返回bytes数组转换问题:如何提取显示的12个整数?
解决方案
方法一:直接处理原始bytes数组(更简洁)
无需先转成列表,直接对原始变量a操作即可:
# 1. 将bytes解码为ASCII字符串,同时去除首尾空白(包括\r\n) str_data = a.decode('ascii').strip() # 2. 去掉开头的'>',按空格分割成数字字符串列表 num_str_list = str_data.lstrip('>').split() # 3. 把每个字符串转成整数,得到目标列表 int_list = list(map(int, num_str_list))
执行后int_list就是你需要的12个整数:[128, 143, 134, 135, 141, 139, 134, 120, 137, 135, 132, 143]
方法二:从已有的列表s处理
如果已经得到了列表s,可以按以下步骤转换:
# 1. 将列表中的ASCII码转换为对应字符,拼接成完整字符串 str_data = ''.join(chr(c) for c in s) # 2. 去掉开头的'>',按空格分割成数字字符串列表 num_str_list = str_data.lstrip('>').split() # 3. 转换为整数列表 int_list = list(map(int, num_str_list))
补充说明
- 原始bytes内容是ASCII编码的文本,解码时用
ascii编码完全适配; split()默认会按任意空白字符(包括多个空格、制表符等)分割,无需担心多余空格的干扰;- 两种方法最终都能得到目标的12个整数列表。
内容的提问来源于stack exchange,提问作者adameye2020
相关产品推荐
相关产品推荐

