• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Tsunamy_boy

Compressor de dados em c#

10 mensagens neste tópico

Ando a fazer um compressor de dados,já me matei a pensar e consegui encontrar uma forma para o fazer(pode não ser a mais eficiente mas serve,pelo menos tenho uma).

Para o fazer preciso de trabalhar com o binario do ficheiro,tanto para ler como para escrever o resultado final.ler em binario já consigo agora o problema e conseguir escrever em binario.

A estrutura do programa e:

Tenho uma caixa de texto onde apresento e trabalho o binario,o que eu queria era gravar isso num ficheiro alguém sabe como posso gravar o resultado num ficheiro directamente em binario?

Tem que ser mesmo em binario,não posso converter para texto e gravar em texto pois a estrutura do binario vai ser de 8bits+4bits e não de 8em8 como e o normal.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem para escreveres num ficheiro usas o mesmo processo que no abrir mas inversamente.

Em relação de ser bit a bit, isso penso que seja impossível. O valor mínimo é o byte. Mesmo se a lógica do teu programar funcionar para 12 bits de cada vez, tens de ter em conta, que no fim do ficheiro terás que preencher os 4 bits, caso se estes faltarem para completar 1 byte. Talvez com os 4 bits a zero.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu não encontro nada de ler e escrever bits, é um facto ao que dizes!

Já encontrei como fazer um BitArray agora guarda-lo tá dificil...

e todos os ficheiros que vi (já comprmidos) tanto ficheiros rar, zip, jpg e mp3 têm todos bytes cretos, agora se o windows arredonda o valor, não sei...

Mas estar a acrescentar bits no fim, tipo imagina que tinha 1 a mais? tinha que acrescentar 7 zeros(ia aumentar o ficheiro) e outro problema seria saber que aqueles zeros não fazem parte do ficheiro, apenas lá estão para fazer bytes certos...

Quem anda a programar em binário, tem que fazer bytes certos?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Começar a construir a casa pelo telhado normalmente não dá bom resultado.

Rimou... e é verdade!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Começar a construir a casa pelo telhado normalmente não dá bom resultado.

Rimou... e é verdade!

Loool eu ja tenho um metodo de compressão á partida funciona, alias é com base noutro mas melhorado.

Agora o que me falta é poder gravar os bits que quero e não em bytes.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Quem anda a programar em binário, tem que fazer bytes certos?

Não conheço ninguém que programe em binário directamente, a não ser em raras excepções...

Vou ser sincero contigo, parece que te faltam algumas bases na área de arquitectura de computadores. Estuda um pouco sobre esse assunto e sobre operações bit-a-bit (AND, OR, XOR).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não conheço ninguém que programe em binário directamente, a não ser em raras excepções...

Vou ser sincero contigo, parece que te faltam algumas bases na área de arquitectura de computadores. Estuda um pouco sobre esse assunto e sobre operações bit-a-bit (AND, OR, XOR).

Mas apenas quero gravar o conteúdo e não programar em linguagens de baixo nível.

Estudar isso, servia-me para que? Para melhorar o método de compressão é isso?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ajudava-te a perceber coisas essenciais para programadores, como a forma como os dados são armazenados. E descobrias que a unidade mínima de escrita num disco é o byte. E já não dizias algo como

agora se o windows arredonda o valor, não sei...

Compressão de dados já é só por si um tema bastante complexo. Sem saberes alguns pormenores de mais baixo nível (arquitecturalmente falando), só por milagre é que consegues escrever algo que funcione.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ajudava-te a perceber coisas essenciais para programadores, como a forma como os dados são armazenados. E descobrias que a unidade mínima de escrita num disco é o byte. E já não dizias algo como

agora se o windows arredonda o valor, não sei...

Compressão de dados já é só por si um tema bastante complexo. Sem saberes alguns pormenores de mais baixo nível (arquitecturalmente falando), só por milagre é que consegues escrever algo que funcione.

Queres que te dedique tempo a explicar-te isso?

Então é assim:

A unidade de escrita é o bit que é constituida por 0's e 1's, significando desligado e ligado correspondentemente.

Para criar um caracter é preciso 1byte (1byte tem 8bits [viste esta não sabias  :cheesygrin:]) assim como podem ver na tabela ASCII em http://www.ascii-code.com/,

Esses 8 bits vão de 00000000 a 11111111... e etc................................................................................

Hum? já aprendes-te uma coisas hoje...

Bem mas o que eu quero é saber como gravar os bits...

Já agora o meu método é o do dicionário de palavras onde guardo as palavras que têm redundância e lhes dou um ID, depois chamo o ID dessa palavra. Foi o melhor método que vi até agora, apenas peguei nele e melhorei-o talvez resulte....

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Agora perdi o pouco respeito que ainda tinha por ti. Ainda tens que comer muitas papas para chegar ao nível dos calcanhares da maioria dos utilizadores deste fórum que te tentaram ajudar, mas com respostas destas nem vale a pena tentar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora