Microsoft.Protocols.TestSuites.SharedAdapter.ExGuid.DoDeserializeFromByteArray C# (CSharp) Method

DoDeserializeFromByteArray() protected method

This method is used to deserialize the ExGuid basic object from the specified byte array and start index.
protected DoDeserializeFromByteArray ( byte byteArray, int startIndex ) : int
byteArray byte Specify the byte array.
startIndex int Specify the start index from the byte array.
return int
        protected override int DoDeserializeFromByteArray(byte[] byteArray, int startIndex)
        {
            using (BitReader bitReader = new BitReader(byteArray, startIndex))
            {
                int numberOfContinousZeroBit = 0;
                while (numberOfContinousZeroBit < 8 && bitReader.MoveNext())
                {
                    if (bitReader.Current == false)
                    {
                        numberOfContinousZeroBit++;
                    }
                    else
                    {
                        break;
                    }
                }

                switch (numberOfContinousZeroBit)
                {
                    case 2:
                        this.Value = bitReader.ReadUInt32(5);
                        this.GUID = bitReader.ReadGuid();
                        this.Type = ExtendedGUID5BitUintType;
                        return 17;

                    case 5:
                        this.Value = bitReader.ReadUInt32(10);
                        this.GUID = bitReader.ReadGuid();
                        this.Type = ExtendedGUID10BitUintType;
                        return 18;

                    case 6:
                        this.Value = bitReader.ReadUInt32(17);
                        this.GUID = bitReader.ReadGuid();
                        this.Type = ExtendedGUID17BitUintType;
                        return 19;

                    case 7:
                        this.Value = bitReader.ReadUInt32(32);
                        this.GUID = bitReader.ReadGuid();
                        this.Type = ExtendedGUID32BitUintType;
                        return 21;

                    case 8:
                        this.GUID = Guid.Empty;
                        this.Type = ExtendedGUIDNullType;
                        return 1;

                    default:
                        throw new InvalidOperationException("Failed to parse the ExGuid, the type value is unexpected");
                }
            }
        }
    }