Jump to content
Sign in to follow this  
Kleber Augusto Wilcke

Como faço para ver e manipular o arquivo binário (os 0 e 1 dos arquivos)?

 Read less than a minute

Recommended Posts

 Read less than a minute

  Boa noite, estou querendo criar um compactador, o algoritmo de compactação já está pronto (depois de 5 anos sempre dando algo errado agora deu certo), o problema é que eu não sei ler e manipular os bytes do arquivo. Pesquisei ofstream e ifstream para o meu intuito, mas na internet só fala de ler campos e variáveis, em nenhum lugar fala de ler os bytes propriamente dito. Por exemplo, eu teria que ler o primeiro byte (01011101) processa-lo com meu algoritmo e escrever um novo byte em um novo arquivo (por exemplo: 01010101) só que não sei manipular bytes puros... só consegui ler e escrever texto.

Share this post


Link to post
Share on other sites
 Read less than a minute

Tem vários caminhos. O primeiro que me vem à mente é criar um buffer e usar a fread() para ler. Usando fopen, fread, fwrite, etc deixará seu programa portável, mas se a intensão é trabalhar em Linux e seus amigos somente, pode usar open(), read(), write() etc.

Na aula 18 do curso Programação Moderna em C eu falo sobre como ler os bytes de um arquivo PE (mas pode ser qualquer outro, claro):

Mas I/O é custoso. Talvez seja interessante você usar funções que leiam o arquivo inteiro para a memória e depois ler de lá. Neste caso eu não sei se tem algo portável, mas na libpe por exemplo, o @jweyrich optou por usar mmap() e a gente compila pra Windows usando o Cygwin.

Mas se estiver falando de C++, aí eu não sei. Talvez o @fredericopissarra?

Abraço!

Share this post


Link to post
Share on other sites
Posted (edited)
 Read less than a minute

É meio difícil criar um algoritmo de compactação, e existem aos montes por ai: Huffman Encoding, zlib, Lempel-Zif-Welch, etc... Mas é tremendamente mais fácil criar rotinas que leiam um bitstream. Tenho lá minhas dúvidas sobre o que o Kleber tenha feito...

Mesmo assim, tenho por política ajudar alguém que também ajuda os outros... Se o algoritmo é milagroso ou inovador, quero vê-lo antes... Curiosidade profissional.

Edited by fredericopissarra

Share this post


Link to post
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
Reply to this topic...

×   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.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...