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]; } } } }