2016-09-17 88 views
0

我需要將浮點數(4字節)壓縮到1字節(0到0xFF)才能發送到另一個設備。浮點數的範圍從-100000.0到100000.0。將4字節浮點數據壓縮爲1字節

其他設備將從1字節解碼回浮點數。它如何以最小的數據丟失來實現?

謝謝,JC

+0

轉換字節乘以127/100000,然後做相反的解壓縮?但爲什麼不只是傳輸四個字節而不是一個? – Timtech

+0

感謝您的建議!傳輸一個字節的原因是由於通信帶寬。 –

+0

好的,但要意識到你不能只將4個字節壓縮到1中。一個數據字節可以表示的最大唯一值是256(2^8)。 – Timtech

回答

1

一個解決方案是使用量化。將100000分爲127個間隔。發送浮點數所屬的間隔號以及最低或最高位中的符號

在您的情況下,間隔= 787,4 例如,您有類似於100的輸入。發送1.輸入1000,147732。發送2 在設備上,您可以按照間隔時間恢復號碼。 最簡單的解決方法是將數字恢復爲間隔的中間值。例如,每一個屬於第一區間持股量將恢復爲393.7 如果您有數字分發一些統計數據和它的不統一,你可以圍繞它通過改變間隔長度玩和量化頻繁的彩車更精確地