/// <summary> /// Reads a 64 bit integer value written using WriteRangedInteger() (64 version) /// </summary> /// <param name="min">The minimum value used when writing the value</param> /// <param name="max">The maximum value used when writing the value</param> /// <returns>A signed integer value larger or equal to MIN and smaller or equal to MAX</returns> public long ReadRangedInteger(long min, long max) { ulong range = (ulong)(max - min); int numBits = NetUtility.BitsToHoldUInt64(range); ulong rvalue = ReadUInt64(numBits); return(min + (long)rvalue); }
/// <summary> /// Writes an integer with the least amount of bits need for the specified range /// Returns number of bits written /// </summary> public int WriteRangedInteger(long min, long max, long value) { NetException.Assert(value >= min && value <= max, "Value not within min/max range!"); ulong range = (ulong)(max - min); int numBits = NetUtility.BitsToHoldUInt64(range); ulong rvalue = (ulong)(value - min); Write(rvalue, numBits); return(numBits); }