Exemplo n.º 1
0
        private static int ReadConstant(BinaryReader reader)
        {
            byte firstByte = reader.ReadByte();
            int  length    = GetConstantLength(firstByte);

            if (length == 4)
            {
                return(reader.ReadInt32BE());
            }

            bool positive = IsPositiveConstant(firstByte);

            firstByte = positive ? firstByte &= PositiveConstantValueMask : firstByte |= NegativeConstantValueMask;

            var constBytes = new[] { firstByte }.Concat(reader.ReadBytes(length - 1).Reverse()).ToArray();

            constBytes = Enumerable.Repeat((byte)(positive ? 0x00 : 0xFF), 4 - constBytes.Length)
                         .Concat(constBytes).ToArray();

            return(BinaryUtils.BytesToInt32(constBytes, ByteOrder.BigEndian));
        }