|
[{"id":"f64c029.2c5838","type":"function","z":"2ae8b25a.bffaa6","name":"IEEE-754 to float","func":"/* Converts from an number, string, buffer or array representing an IEEE-754 value\n * to a javascript float.\n * The following may be given in msg.payload:\n * A string representing a number, which may be hex or binary\n * examples, \"1735\" \"0x02045789\" 0b01000000010010010000111111011011\n * An integer value\n * A four element array or buffer of 8 bit values, most significant byte first.\n*/ \n// first make a number from the given payload if necessary\nlet intValue;\nif (typeof msg.payload === \"number\") {\n intValue = msg.payload;\n} else if (typeof msg.payload === \"string\") {\n intValue = Number(msg.payload);\n} else if (msg.payload.length == 4) {\n // four byte array or buffer\n intValue = (((((msg.payload[0] << 8) + msg.payload[1]) << 8) + msg.payload[2]) << 8) + msg.payload[3];\n} else {\n node.warn(\"Unrecognised payload type or length\");\n}\n\nmsg.payload = Int2Float32(intValue);\nreturn msg;\n\nfunction Int2Float32(bytes) {\n var sign = (bytes & 0x80000000) ? -1 : 1;\n var exponent = ((bytes >> 23) & 0xFF) - 127;\n var significand = (bytes & ~(-1 << 23));\n\n if (exponent == 128) \n return sign * ((significand) ? Number.NaN : Number.POSITIVE_INFINITY);\n\n if (exponent == -127) {\n if (significand === 0) return sign * 0.0;\n exponent = -126;\n significand /= (1 << 22);\n } else significand = (significand | (1 << 23)) / (1 << 23);\n\n return sign * significand * Math.pow(2, exponent);\n}","outputs":1,"noerr":0,"x":385,"y":724,"wires":[["6e888b6a.40c874"]]},{"id":"6e888b6a.40c874","type":"debug","z":"2ae8b25a.bffaa6","name":"Value","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":574,"y":724,"wires":[]},{"id":"2dc3b0d4.06517","type":"inject","z":"2ae8b25a.bffaa6","name":"1 string hex","topic":"","payload":"0x3f800000","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":105,"y":614,"wires":[["f64c029.2c5838"]]},{"id":"43e54f8e.0cf598","type":"inject","z":"2ae8b25a.bffaa6","name":"-2 string hex","topic":"","payload":"0xc0000000","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":104,"y":650,"wires":[["f64c029.2c5838"]]},{"id":"a8fc7865.b2a438","type":"inject","z":"2ae8b25a.bffaa6","name":"Pi string hex","topic":"","payload":"0x40490fdb","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":104,"y":684,"wires":[["f64c029.2c5838"]]},{"id":"f2c4c56.6390138","type":"inject","z":"2ae8b25a.bffaa6","name":"Pi string dec","topic":"","payload":"1078530011","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":101.5,"y":758,"wires":[["f64c029.2c5838"]]},{"id":"e830bb54.c9cf08","type":"inject","z":"2ae8b25a.bffaa6","name":"Pi string binary","topic":"","payload":"0b01000000010010010000111111011011","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":112,"y":720,"wires":[["f64c029.2c5838"]]},{"id":"d1f3247b.ea8798","type":"inject","z":"2ae8b25a.bffaa6","name":"Pi integer","topic":"","payload":"1078530011","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":97,"y":545,"wires":[["f64c029.2c5838"]]},{"id":"d7bfbaa2.85c4c8","type":"inject","z":"2ae8b25a.bffaa6","name":"Pi Array","topic":"","payload":"[64,73,15,219]","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":83,"y":817,"wires":[["f64c029.2c5838"]]},{"id":"70a1c40f.9a925c","type":"inject","z":"2ae8b25a.bffaa6","name":"Pi Buffer","topic":"","payload":"[64,73,15,219]","payloadType":"bin","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":92,"y":855,"wires":[["f64c029.2c5838"]]}] |