Eine Lösung ist die Quantisierung zu verwenden. Teilen Sie 100000 auf 127 Intervalle. Senden Sie die Intervallnummer, zu der Float gehört, und ein Vorzeichen auf dem niedrigsten oder höchsten Bit
In Ihrem Fall ist das Intervall = 787,4 Zum Beispiel haben Sie Eingabe wie 100. Senden 1. Eingabe 1000,147732. Send 2 Auf dem Gerät können Sie die Nummer nach ihrem Intervall wiederherstellen. Die einfachste Lösung besteht darin, die Nummer als Mitte des Intervalls wiederherzustellen. Zum Beispiel wird jeder Float, der zum ersten Intervall gehört, als 393.7 wiederhergestellt. Wenn Sie Statistiken für die Verteilung der Ziffern haben und diese nicht einheitlich sind, können Sie sie umgehen, indem Sie die Intervalllänge ändern und häufigere Floats genauer quantisieren
Convert zu byte durch Multiplikation mit 127/100000, dann das Gegenteil zu dekomprimieren? Aber warum nicht einfach vier Bytes anstelle von einem übertragen? – Timtech
Danke für den Vorschlag! Der Grund für die Übertragung eines Bytes liegt an der Kommunikationsbandbreite. –
Okay, aber stellen Sie sicher, dass Sie nicht nur 4 Bytes in 1 komprimieren können. Die maximalen eindeutigen Werte, die ein Datenbyte darstellen kann, ist 256 (2^8). – Timtech