public unsafe void AtualizarCRC()
        {
            Byte[] dados = toByteArray();

            fixed(byte *pSrc = dados)
            {
                FormatoMotoristas *regiao = (FormatoMotoristas *)pSrc;

                this.crc = CalcularCRC(dados);
            }
        }
        public bool VerificarCRC(Byte[] dados)
        {
            unsafe
            {
                fixed(byte *pSrc = dados)
                {
                    FormatoMotoristas *motoristas = (FormatoMotoristas *)pSrc;

                    return(motoristas->crc == CalcularCRC(dados));
                }
            }
        }
        private unsafe UInt16 CalcularCRC(Byte[] dados)
        {
            int tamanho;

            Byte[] dadosCRC = new byte[sizeof(FormatoMotoristas) - sizeof(UInt16)];

            fixed(byte *pSrc = dados)
            {
                FormatoMotoristas *motorista = (FormatoMotoristas *)pSrc;

                Array.Copy(dados, 0, dadosCRC, 0, (int)&motorista->crc - (int)pSrc);
                Array.Copy(dados, ((int)&motorista->crc - (int)pSrc + sizeof(UInt16)), dadosCRC,
                           (int)&motorista->crc - (int)pSrc,
                           sizeof(FormatoMotoristas) - ((int)&motorista->crc - (int)pSrc + sizeof(UInt16)));

                return(CRC16CCITT.Calcular(dadosCRC));
            }
        }
        private void FromBytesToFormatoPainelCfg(byte[] dados)
        {
            unsafe
            {
                fixed(byte *pSrc = dados)
                {
                    FormatoMotoristas *roteiros = (FormatoMotoristas *)pSrc;

                    this.versao = roteiros->versao;
                    this.id     = roteiros->id;

                    this.labelIdentificacao = ArrayLDX2.ByteArrayToString(roteiros->labelIdentificacao, 20);
                    this.labelNome          = ArrayLDX2.ByteArrayToString(roteiros->labelNome, 20);

                    this.crc = roteiros->crc;
                }
            }
        }
        private byte[] toByteArray()
        {
            unsafe
            {
                Byte[] resultado = new Byte[sizeof(FormatoMotoristas)];

                fixed(byte *pSrc = resultado)
                {
                    FormatoMotoristas *roteiros = (FormatoMotoristas *)pSrc;

                    roteiros->versao = this.versao;
                    roteiros->id     = this.id;

                    ArrayLDX2.StringToByteArray(roteiros->labelIdentificacao, this.labelIdentificacao, 20);
                    ArrayLDX2.StringToByteArray(roteiros->labelNome, this.labelNome, 20);

                    roteiros->crc = this.crc;

                    return(resultado);
                }
            }
        }