2016-09-17 87 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 如果您有数字分发一些统计数据和它的不统一,你可以围绕它通过改变间隔长度玩和量化频繁的彩车更精确地