2016-09-17 11 views
0

浮動小数点数(4バイト)を1バイト(0〜0xFF)に圧縮して別のデバイスに送信する必要があります。浮動小数点数の範囲は-100000.0〜100000.0です。4バイトの浮動小数点データを1バイトに圧縮

もう1つのデバイスは、1バイトから浮動小数点数にデコードします。それは最小のデータ損失でどのようにしますか?

ありがとう、JC

+0

Convert 127/100000を掛けてバイトに変換し、逆に圧縮を解除しますか?しかし、1つではなく4つのバイトを転送するだけではどうですか? – Timtech

+0

提案をありがとう! 1バイトを転送する理由は、通信帯域幅によるものです。 –

+0

さて、4バイトを1に圧縮することはできません。データの1バイトが表すことができる一意の最大値は256(2^8)です。 – Timtech

答えて

1

1つの解決策は、量子化を使用することです。 100000から127の間隔で除算します。浮動小数点数が属する区間番号と最下位ビットまたは最上位ビットの符号を送信してください

場合によっては、区間= 787,4 などと入力します。送信1. 1000,147732を入力します。送信2 デバイスでは、間隔で番号を復元できます。 最も簡単な解決策は、間隔の中間として番号を復元することです。たとえば、最初の間隔に属するすべての浮動小数点は393.7に復元されます 数字分布の統計情報があり、均一でない場合は、間隔の長さを変更して頻繁に浮動小数点をより正確に量子化することで遊ぶことができます

関連する問題