/// <summary>
        /// Reads from DataStream's byte array a byte
        /// </summary>
        /// <returns>byte value</returns>
        public byte[] ReadByteArray(int length)
        {
            byte[] returnedData = DataStream.ReturnByteArray(this.pduDataStream.StreamByteArray, this.pduDataStream.StreamCounter, length);

            this.pduDataStream.StreamCounter += length;
            return(returnedData);
        }
        /// <summary>
        /// Reads from DataStream's byte array a unsigned short
        /// </summary>
        /// <returns>unsigned short value</returns>
        public ushort ReadUnsignedShort()
        {
            int size = sizeof(ushort);

            byte[] temp = DataStream.ReturnByteArray(this.pduDataStream.StreamByteArray, this.pduDataStream.StreamCounter, size);

            if (this.Endian == Endian.Big)
            {
                Array.Reverse(temp);
            }

            ushort returnedData = System.BitConverter.ToUInt16(temp, 0);

            this.pduDataStream.StreamCounter += size;
            return(returnedData);
        }
        /// <summary>
        /// Reads from DataStream's byte array a long
        /// </summary>
        /// <returns>long value</returns>
        public long ReadLong()
        {
            int size = sizeof(long);

            byte[] temp = DataStream.ReturnByteArray(this.pduDataStream.StreamByteArray, this.pduDataStream.StreamCounter, size);

            if (this.Endian == Endian.Big)
            {
                Array.Reverse(temp);
            }

            long returnedData = System.BitConverter.ToInt64(temp, 0);

            this.pduDataStream.StreamCounter += size;
            return(returnedData);
        }
        /// <summary>
        /// Reads from DataStream's byte array an int value
        /// </summary>
        /// <returns>int value</returns>
        public int ReadInt()
        {
            int size = sizeof(int);

            byte[] temp = DataStream.ReturnByteArray(this.pduDataStream.StreamByteArray, this.pduDataStream.StreamCounter, size);

            if (this.Endian == Endian.Big)
            {
                Array.Reverse(temp);
            }

            int returnedData = System.BitConverter.ToInt32(temp, 0);

            this.pduDataStream.StreamCounter += size;
            return(returnedData);
        }
        /// <summary>
        /// Reads from DataStream's byte array a float value
        /// </summary>
        /// <returns>float value</returns>
        public float ReadFloat()
        {
            int size = sizeof(float);

            byte[] temp = DataStream.ReturnByteArray(this.pduDataStream.StreamByteArray, this.pduDataStream.StreamCounter, size);

            if (this.Endian == Endian.Big)
            {
                Array.Reverse(temp);
            }

            float returnedData = System.BitConverter.ToSingle(temp, 0);

            this.pduDataStream.StreamCounter += size;
            return(returnedData);
        }
        /// <summary>
        /// Reads from DataStream's byte array a double value
        /// </summary>
        /// <returns>double value</returns>
        public double ReadDouble()
        {
            int size = sizeof(double);

            byte[] temp = DataStream.ReturnByteArray(this.pduDataStream.StreamByteArray, this.pduDataStream.StreamCounter, size);

            if (this.Endian == Endian.Big)
            {
                Array.Reverse(temp);
            }

            double returnedData = System.BitConverter.ToDouble(temp, 0);

            this.pduDataStream.StreamCounter += size;
            return(returnedData);
        }