我在 github 上找到了一些从德州仪器传感器标签中提取温度的示例代码: https ://github.com/msaunby/ble-sensor-pi/blob/master/sensortag/sensor_calcs.py
我不明白以下代码的作用:
tosigned = lambda n: float(n-0x10000) if n>0x7fff else float(n)
我如何阅读上面的代码:
if n>0x7fff: n = float(n-0x10000)
else n = float(n)
基本上发生的事情是将二进制补码值(n)转换为浮点数。为什么只有当 n 的值大于 0x7fff 时才会发生这种情况?如果值为 0x7fff 或更小,那么我们只需将 i 转换为浮点数。为什么?我不明白这一点。
德州仪器的示例代码可以在这里找到:http: //processors.wiki.ti.com/index.php/SensorTag_User_Guide#SensorTag_Android_Development
为什么TI示例代码中这个函数的返回值除以128.0?
private double extractAmbientTemperature(BluetoothGattCharacteristic c) {
int offset = 2;
return shortUnsignedAtOffset(c, offset) / 128.0;
}
我确实向开发人员提出了这个问题,但没有得到答复。