无符号字节数组转 HEX

Unsigned bytearray to HEX

我刚开始使用字节,我必须通过其有效负载 (bytearray) 上的某些值过滤掉一些 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 的原因是因为该字节被视为有符号整数(有时称为短整数)而不是无符号整数(unsigned short)。

在 Python 中看起来像:

>>> int.from_bytes(b'\xDA\x03', byteorder='little', signed=False)
986
>>> hex(int.from_bytes(b'\xDA\x03', byteorder='little', signed=False))
'0x3da'