Ir para conteúdo
Fórum Script Brasil
  • 0

Salvando caractereres com a codificação Huffman


Cecil

Pergunta

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.

Editado por Cecil
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...