SnmpSharpNet.AsnType.ParseLength C# (CSharp) Method

ParseLength() static private method

MutableByte version of ParseLength. Retrieve BER encoded length from a byte array at supplied offset
Thrown when buffer is too short
static private ParseLength ( byte mb, int &offset ) : int
mb byte BER encoded data
offset int Offset to start parsing length from
return int
        internal static int ParseLength(byte[] mb, ref int offset)
        {
            if( offset == mb.Length )
                throw new OverflowException("Buffer is too short.");
            int dataLen = 0;
            if ((mb[offset] & HIGH_BIT) == 0)
            {
                // short form encoding
                dataLen = mb[offset++];
                return dataLen; // we are done
            }
            else
            {
                dataLen = mb[offset++] & ~HIGH_BIT; // store byte length of the encoded length value
                int value = 0;
                for (int i = 0; i < dataLen; i++)
                {
                    value <<= 8;
                    value |= mb[offset++];
                    if( offset > mb.Length || (i < (dataLen-1) && offset == mb.Length )	)
                        throw new OverflowException("Buffer is too short.");
                }
                return value;
            }
        }