如何将二进制指数为-10的数字转换为浮点数?

How do convert number with binary exponent -10 into float?

我正在 iOS 上使用低功耗蓝牙设备 Swift 接收一些数据。所述数据在 https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.csc_measurement.xml 中指定为 uint16。它使用二进制指数表示,但我找不到如何将其转换为浮点数以进一步使用它。

Last Wheel Event Time Information: Unit has a resolution of 1/1024s.

Unit: org.bluetooth.unit.time.second

Exponent: Binary, -10

我想只计算 10 位,并将第一段用作小数点之前的部分,将第二段用作小数点后的部分。但是结果好像不对。

非常感谢任何提示或解决方案。

非常感谢。

-10 的二进制指数与将 uint16 值转换为 Double 并除以 1024.0(或乘以 2 的 1.0 到第 10 次)相同。

进一步扩展 hotpaw2 的上述答案-

一般:

Exponent: Binary, 0 => 001 => 1 decimal Exponent: Binary, -1 => 0.1 => 1/(2^1) => 1/2 => 0.5 decimal Exponent: Binary, -2 => 0.01 => 1/(2^2) => 1/4 => 0.25 decimal Exponent: Binary, -3 => 0.001 => 1/(2^3) => 1/8 => 0.125 decimal

现在针对循环功率测量特性的蓝牙 SIG 规范中定义的特定情况

上轮事件时间信息:单位分辨率为1/1024s。

单位:org.bluetooth.unit.time.second

指数:二进制,-10

. Exponent: Binary,-10 => 0.0000000001 => 1/(2^10) => 1/1024 => 0.0009765625 decimal

现在对于从peripheral/server进来的分辨率为1/1024s的BLE特征值数据包:. Last_revolution_event_time

Time(seconds) = Last_revolution_event_time * 1/1024