Diese Frage meiner früheren betrifft:Node.JS deserialisieren schwimmt auf unebenen Offset
I übertragen Daten über eine Bluetooth LE an einen node.js Server. Hier ist das Format der serialisierten Daten:
top: 10 bit (unsigned integer)
bottom: 10 bit (unsigned integer)
accelerometerX: 23 bit (truncated 32-bit floating point)
accelerometerY: 23 bit
...
Daten werden als node.js Puffer empfangen. Ich bin in der Lage, oben und unten zu analysieren, da sie ganze Zahlen sind, und ich kann Shift-Operation für sie verwenden.
top = data.readUInt16LE() & 0x3FF;
bottom = data.readUInt16LE(1);
bottom = (bottom >> 2) & 0x3FF;
accX = data.readUInt32LE(2);
accX = ((accX >> 4) & 0x7FFFFFF) << 9;
Allerdings sind für accX Schwimmer. Ich kann ReadFloat32LE nicht von node.js verwenden, da es nicht Byte-ausgerichtet ist. So, jetzt lese ich als uint32, verschiebe es zurück mit 9 niedrigstwertigen Ziffern. Wie bekomme ich float von seiner Bit-Darstellung in NodeJS?
'23' Bits Herren' 0x7FFFFF'. Du hast ein "F" zu viele. – LPs