public byte[] ToBytes()
        {
            unsafe
            {
                Byte[] resultado = new Byte[sizeof(FormatoVideo01) + this.tamanhoString];

                fixed(byte *pSrc = resultado)
                {
                    FormatoVideo01 *video = (FormatoVideo01 *)pSrc;

                    video->versao = Convert.ToByte(this.versao);
                    Serializable.StringToByteArray(video->formato, this.Formato, 3);
                    video->animacao          = Convert.ToByte(this.animacao);
                    video->alinhamento       = Convert.ToByte(this.alinhamento);
                    video->otimizacao        = Convert.ToByte(this.otimizacao);
                    video->invertido         = Convert.ToByte(this.inverteLeds);
                    video->intervaloAnimacao = (UInt16)this.tempoRolagem;
                    video->tempoApresentacao = (UInt16)this.tempoApresentacao;
                    video->tamanhoString     = (UInt16)this.tamanhoString;
                    Serializable.StringToByteArray(video->fontPath, this.fontPath, this.fontPath.Length);

                    video->Tamanho = (UInt32)resultado.Length;

                    byte *temp = (byte *)&video->texto;

                    for (int i = 0; i < video->tamanhoString; i++)
                    {
                        temp[i] = (byte)this.texto[i];
                    }
                }

                return(resultado);
            }
        }
        public void LoadFromBytes(byte[] dados)
        {
            unsafe
            {
                fixed(byte *pSrc = dados)
                {
                    FormatoVideo01 *vid = (FormatoVideo01 *)pSrc;

                    this.tamanho = (UInt32)dados.Length;
                    this.versao  = vid->versao;

                    this.Formato = string.Empty;
                    Byte[] temp = new byte[3];
                    for (int i = 0; i < 3; i++)
                    {
                        temp[i] = vid->formato[i];
                    }

                    this.Formato = System.Text.Encoding.ASCII.GetString(temp);

                    this.animacao          = vid->animacao;
                    this.alinhamento       = vid->alinhamento;
                    this.otimizacao        = vid->otimizacao;
                    this.inverteLeds       = vid->invertido;
                    this.tempoRolagem      = vid->intervaloAnimacao;
                    this.tempoApresentacao = vid->tempoApresentacao;
                    this.tamanhoString     = vid->tamanhoString;

                    this.fontPath = string.Empty;
                    temp          = new byte[42];
                    for (int i = 0; i < 42; i++)
                    {
                        temp[i] = vid->fontPath[i];
                    }

                    this.fontPath = System.Text.Encoding.ASCII.GetString(temp);

                    //copio tamanho string aqui porque quero limpar o texto.
                    //quando se limpa o texto, automaticamente é alterado o tamanho string pelo setter.
                    uint _tamanhoString = this.tamanhoString;

                    this.texto = String.Empty;

                    byte *temp2 = (byte *)&vid->texto;

                    for (int i = 0; i < _tamanhoString; i++)
                    {
                        texto += (char)temp2[i];
                    }
                }
            }
        }