蓝牙浮点表示
Bluetooth Floating Point representation
我正在尝试实现此蓝牙网状网络特性:
<!--
Copyright 2017 Bluetooth SIG, Inc. All rights reserved.
-->
<Characteristic xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://schemas.bluetooth.org/Documents/characteristic.xsd" name="Illuminance" type="org.bluetooth.characteristic.illuminance" uuid="2AFB" last-modified="2017-07-11" approved="Yes">
<InformativeText>
<Abstract>
The Illuminance characteristic is used to represent a measure of illuminance in units of lux.
</Abstract>
</InformativeText>
<Value>
<Field name="Illuminance">
<InformativeText>Unit is lux with a resolution of 0.01.</InformativeText>
<Format>uint24</Format>
<Unit>org.bluetooth.unit.lux</Unit>
<Minimum>0</Minimum>
<Maximum>167772.14</Maximum>
<DecimalExponent>-2</DecimalExponent>
<BinaryExponent>0</BinaryExponent>
<Multipler>1</Multipler>
<Description>
A value of 0xFFFFFF represents 'value is not known'. All other values are Prohibited.
</Description>
</Field>
</Value>
</Characteristic>
https://www.bluetooth.com/wp-content/uploads/Sitecore-Media-Library/Specifications/Mesh/Xml/Characteristics/org.bluetooth.characteristic.illuminance.xml。该特征以 3 个字节表示勒克斯值。
但我不知道如何将像 0x123456 这样的值转换为真正的浮点数。似乎没有使用标准的 IEEE 754 标准。我也不知道 DecimalExponent
和 BinaryExponent
.
是什么意思
有人能帮帮我吗?
亲切的问候,大安
您link访问的页面中没有浮点数。它使用 -2
和 DecimalExponent
只是为了指定一个 24 位整数值,在普通二进制中将是某个数字 x 从 0 到 16,777,214(保留 16,777,215对于“未知”)表示 x•10−2 勒克斯的值,范围从 0.00 勒克斯到 167,772.14 勒克斯。这是定点,不是浮点;该点固定在它在普通二进制整数表示中的左侧两位数的位置。
我正在尝试实现此蓝牙网状网络特性:
<!--
Copyright 2017 Bluetooth SIG, Inc. All rights reserved.
-->
<Characteristic xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://schemas.bluetooth.org/Documents/characteristic.xsd" name="Illuminance" type="org.bluetooth.characteristic.illuminance" uuid="2AFB" last-modified="2017-07-11" approved="Yes">
<InformativeText>
<Abstract>
The Illuminance characteristic is used to represent a measure of illuminance in units of lux.
</Abstract>
</InformativeText>
<Value>
<Field name="Illuminance">
<InformativeText>Unit is lux with a resolution of 0.01.</InformativeText>
<Format>uint24</Format>
<Unit>org.bluetooth.unit.lux</Unit>
<Minimum>0</Minimum>
<Maximum>167772.14</Maximum>
<DecimalExponent>-2</DecimalExponent>
<BinaryExponent>0</BinaryExponent>
<Multipler>1</Multipler>
<Description>
A value of 0xFFFFFF represents 'value is not known'. All other values are Prohibited.
</Description>
</Field>
</Value>
</Characteristic>
https://www.bluetooth.com/wp-content/uploads/Sitecore-Media-Library/Specifications/Mesh/Xml/Characteristics/org.bluetooth.characteristic.illuminance.xml。该特征以 3 个字节表示勒克斯值。
但我不知道如何将像 0x123456 这样的值转换为真正的浮点数。似乎没有使用标准的 IEEE 754 标准。我也不知道 DecimalExponent
和 BinaryExponent
.
有人能帮帮我吗? 亲切的问候,大安
您link访问的页面中没有浮点数。它使用 -2
和 DecimalExponent
只是为了指定一个 24 位整数值,在普通二进制中将是某个数字 x 从 0 到 16,777,214(保留 16,777,215对于“未知”)表示 x•10−2 勒克斯的值,范围从 0.00 勒克斯到 167,772.14 勒克斯。这是定点,不是浮点;该点固定在它在普通二进制整数表示中的左侧两位数的位置。