Как работает библиотека Lidgren WriteRangedSingle Compression - PullRequest
0 голосов
/ 20 апреля 2020

Здравствуйте, я не могу понять, как библиотека lidgren сжимает число с плавающей запятой с количеством битов, которые мы предоставляем для записи наших данных с плавающей запятой, и как эта библиотека декодирует эти данные. я буду благодарен, что кто-то объяснит эти методы.
запись файла метода

        public void WriteRangedSingle(float value, float min, float max, int numberOfBits)
    {
        NetException.Assert(((value >= min) && (value <= max)), " WriteRangedSingle() must be passed a float in the range MIN to MAX; val is " + value);

        float range = max - min;
        float unit = ((value - min) / range);
        int maxVal = (1 << numberOfBits) - 1;
        Write((UInt32)((float)maxVal * unit), numberOfBits);
    }

чтение файла метода

        public float ReadRangedSingle(float min, float max, int numberOfBits)
    {
        float range = max - min;
        int maxVal = (1 << numberOfBits) - 1;
        float encodedVal = (float)ReadUInt32(numberOfBits);
        float unit = encodedVal / (float)maxVal;
        return min + (unit * range);
    }
...