32ビットの浮動小数点数と16ビットの整数と言ったので、すでにバイナリでコーディングしています。
数値の範囲と有用な精度を考慮してください。それらを制限できる場合は、より少ないビットを使用して数値を再コード化できます。特にフロートは、必要以上のビットを持つ可能性があります。
正しいビット数が 8 の倍数でない場合は、バイト ストリームをビット ストリームとして扱い、必要なビットのみを使用します。次のバイト境界に移動するために追加されたビットが別の数値として解釈されないように、データの終わりを適切に処理するように注意してください。
数値が互いに何らかの相関関係にある場合は、それを利用する必要があります。たとえば、波形の表示など、連続する数値の差が通常小さい場合は、数値の代わりに差を送信します。差異は、可変長整数またはハフマン符号化または組み合わせを使用して符号化できます。たとえば、範囲のハフマン符号と各範囲内の余分なビットです。
使用できる他の相関関係がある場合は、前の値に基づいて次の値の予測子を設計します。次に、実際の値と予測値の差を送信します。前の例では、予測子は単に最後の値です。より複雑な予測子の例は、数値が 2D テーブルを表し、隣接する行と列の両方が相関している場合の 2D 予測子です。PNG 画像形式には、2D 予測変数の例がいくつかあります。
これらすべては、データ (理想的には大量のデータ) を使用して実験を行い、何が役に立ち、何が役に立たないか、わずかな利益しかないかを確認する必要があります。