Lista de discussão de MAC 2301


[Prévia por Data][Próxima por Data]
[Prévia por Assunto][Próxima por Assunto]
[Índice por Data][Índice por Assunto]
[Envie uma nova mensagem para a lista] [Responda esta mensagem]

RE: Re: EP3 - não era bem isso que eu queria dizer



 Tá... só que não é bem isso que eu quero dizer. O esquema é o seguinte: a 
gente tem o código que o computador usa, de 8 bits, e a gente tem um código 
gerado pela árvore de huffman, no qual cada caractere (imaginando que 
codificamos todos os caracteres do código original do computador) pode ter 
de 1 a 255 bits, certo? Aí eu pego, abro um arquivo compactado, dou um 
getc(), e pego uma letrinha: 8 bits. Isso é ruim. Eu quero 1 só. Ou então 
não. Eu pego, abro um arquivo no qual eu planejo escrever o meu código 
compactado, e quando eu vou mandar o meu putc(), surpresa: ele manda bytes 
inteiros para o arquivo.
 Claro, eu sei que é possível fazer tudo só com ascii e divisões por 
potências de 2 ou shifts - mas putz, que trabalho ingrato! O micro opera 
com bits, eu quero operar com bits, não é meio infeliz eu me matar pra usar 
um byte de uma maneira que só dá mais trabalho pro micro? Do jeito que 
está, o melhor método que eu consegui imaginar é criar uma cópia do arquivo 
com os valores dos caracteres em binário (escrito em ascii, claro, ia sair 
um monstro, com oito vezes o tamanho do arquivo original) e depois refazer 
a leitura por lá, ou codificar a escrita a partir de lá... o que não é lá 
algo muito bom, né? Então, voltando à pergunta original:
 Como eu faço pra abrir um arquivo e trabalhar com valores binários; como 
eu trabalho com bits? Tem alguma biblioteca? Um putbit, getbit, sei lá... 
qualquer coisa que amenize o sofrimento de trabalhar com caracteres de 
tamanho variável serve...

Grazie,
Iúri Chaer

PS.: desculpa resmungar, é que eu já estou quebrando a cabeça em cima disso 
e lendo o Kernigan há horas...