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

bluepy读取BLE特征值如何直接转为整数而非ASCII值

解决方案

你读取到的BLE电池服务特征值是长度为1的bytes类型对象,Python中bytes的每个元素本身就是0-255的十进制整数,最简洁的替换写法为:

print(val[0])

该方案完全等价于你现在的ord(val.decode()),但省去了冗余的解码、转码步骤,是最直接的实现。


其他可选方案

如果要适配BLE特征值解析的通用规范,方便后续扩展其他类型的特征值读取,可以用struct模块按标准类型解析:
电池服务的电量特征属于标准的单字节无符号整数,使用对应格式符B解析即可:

import struct
battery_level = struct.unpack('B', val)[0]
print(battery_level)

之前的方案问题说明

  1. int(val, 2)报错的原因:该方法仅适用于内容为数字字符串的bytes(比如代表二进制数值的b'101111'),你拿到的b'/'是字节本身的编码值,不是数字的字符串表示,所以无法直接转换。
  2. 之前struct方案失败的原因:你之前使用了浮点数格式符f解析,和1字节无符号整数的类型不匹配,换用正确的格式符即可正常工作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 08:54:02