Help understanding the payload

Hi all,

I am learning how to operate with the TTN and i am going to need some help. i am trying to understand how this code works but there are things that i don’t get why. if someone can help me, it will help me a lot.

function Decoder(bytes, port) {

function bytesToFloat(bytes) {
//LSB Format (least significant byte first).
var bits = bytes[3]<<24 | bytes[2]<<16 | bytes[1]<<8 | bytes[0]; // takes the four bits bit[0] , bit[1]
var sign = (bits>>>31 === 0) ? 1.0 : -1.0; // We take the bit[31] and see if it’s not equal to 0 we assign 1.
var e = bits>>>23 & 0xff; // WHY ARE THEY DOING THIS?
var m = (e === 0) ? (bits & 0x7fffff)<<1 : (bits & 0x7fffff) | 0x800000; // WHAT ARE THEY TRYING TO DO?.
var f = sign * m * Math.pow(2, e - 150); // AND IN HERE?
return f;
}

return {
temp: bytesToFloat(bytes.slice(0, 4))
};
}

Thanks for your help.

Regards,

The code decodes a floating point number. This is done using the IEEE 754 standard. You can read more here: https://en.wikipedia.org/wiki/Single-precision_floating-point_format