Beispiel #1
0
        internal static double ReadVarDouble(BinaryReader reader)
        {
            var input = reader.ReadByte();

            var buff = SharedArray.Get();

            var embedded = (input & FlagEmbedded) == FlagEmbedded;

            if (embedded)
            {
                SharedArray.ClearArray8();

                // last byte
                buff[7] = (byte)(input & MaskEmbedded);
                return(BitConverter.ToDouble(buff, 0));
            }

            int length = input;

            if (length < 8)
            {
                SharedArray.ClearArray8();
            }

            reader.Read(buff, 8 - length, length);

            return(BitConverter.ToDouble(buff, 0));
        }