BACSharp.Types.BacNetRawMessage.NpduLength C# (CSharp) Метод

NpduLength() приватный Метод

private NpduLength ( byte message ) : int
message byte
Результат int
        private int NpduLength(byte[] message)
        {
            if (_bvlc.Length + 2 > message.Length)
                return 0;
            int npduLength = 2, npduStart = _bvlc.Length;
            if (npduStart > 3)
            {
                byte version = message[npduStart];
                byte npci = message[npduStart + 1];
                bool destSpecified = false, sourceSpecified = false;
                for (int i = 0; i < 8; i++)
                {
                    if ((npci >> i & 1) == 1)
                    {
                        switch (i)
                        {
                            case 3:
                                sourceSpecified = true;
                                break;
                            case 5:
                                destSpecified = true;
                                break;
                        }
                    }
                }
                int destAddrLen = -1, sourceAddrLen = -1;
                if (destSpecified)
                {
                    destAddrLen = message[npduStart + 4];
                    npduLength = 6 + destAddrLen;
                }
                if (sourceSpecified)
                {
                    sourceAddrLen = destSpecified ? message[npduStart + 7 + destAddrLen] : message[npduStart + 4];
                    npduLength = destSpecified ? 9 + destAddrLen + sourceAddrLen : 5 + sourceAddrLen;
                }

            }
            return npduLength;
        }