Jump to content
Fórum Script Brasil
  • 0

Salvando caractereres com a codificação Huffman


Cecil

Question

Olá

Estou com um probleminha no meu código de compressão de huffman, então, se alguém puder me ajudar, fico grato. :)

No meu programa, eu substituo os 8 bits originais dos caracteres que mais aparecem em uma quantidade de bits menor, que seria o código do caractere. Na hora de salvar o arquivo comprimido, o programa ajunta vários bits, que são os caracteres codificados. Ele vai ajuntando até inteirar 8 bits, e assim eu posso usar esses bits pra salvar um caractere no arquivo comprimido.

Acontece que, nesse processo todo, acaba que esses 8 bits sejam exatamente: 00011010 , que é o caractere 26, ou o caractere '\EOF'.

Com isso, ocasionalmente, no meio do arquivo comprimido tem lá no meio dele o '\EOF', e quando o programa lê o arquivo comprimido pra fazer a descompressão, quando ele se depara com esse caractere, ele acha que o arquivo acabou! E então ele para de descomprimir.

Gostaria de saber se alguém tem alguma ideia de como eu possa resolver isso, seja forçando o comando fscanf a ler o '\EOF' e seguir com o arquivo; ou alguma forma do programa identificar que ele estaria salvando o caractere '\EOF', lá na hora de comprimir.

Eu já tentei resolver isso usando uma sequencia de bits pra ser inserida antes do 00011010, e quando essa sequencia de bits fosse lida, o programa poderia identificar que o que vem depois era o '\EOF'. Assim eu n precisaria salvar o caractere '\EOF' no arquivo comprimido, só a sequencia de bits já bastaria pro programa entender que o caractere devia estar ali. Mas isso não deu certo. :(

Obrigado pela ajuda, desde já. Qualquer coisa eu posto o código do programa que eu tenho aqui.

Edited by Cecil
Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Opa, boa noite.

Seria mais fácil te ajudar se você postasse parte do seu código, pelo menos a parte onde você faz a leitura do arquivo.

Mas já me adianta uma coisa, você tá manipulando seu stream em modo binário né???

Outra coisa, você está usando fscanf pra fazer a leitura do arquivo? Em modo binário, é preferível que se use o fread( ).

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...