Здравствуйте, я не могу понять, как библиотека 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);
}