如何解决无符号字节数组到十六进制
我刚开始使用字节,我必须通过有效负载(字节数组)上的某些值过滤掉一些 BLE 消息
根据我正在使用的设备的文档,有效载荷的第 3 和第 4 个值对应于公司 ID。我得到的值是 [-38,3]
,文档指出这个值应该是 0x03DA
。这些值完全兼容吗?我应该如何翻译它以确保它没问题?
解决方法
你没有说明你用什么语言做这件事,但有一些关于蓝牙数据的一般观点。
来自https://www.bluetooth.com/specifications/assigned-numbers/company-identifiers/:
如果十六进制值为 0x03DA
,则为十进制 986
且适用于 EnOcean GmbH。
蓝牙以小端格式传输字节,因此字节将是 [0xDA,0x03]
或 [218,3]
。您看到 -38
的原因是该字节被视为有符号整数(有时称为短整数)而不是无符号整数(无符号短整数)。
在 Python 中,这看起来像:
>>> int.from_bytes(b'\xDA\x03',byteorder='little',signed=False)
986
>>> hex(int.from_bytes(b'\xDA\x03',signed=False))
'0x3da'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。