Enviado em 01/02/2018 - 18:26h
Olá, estou trabalhando em um programa que converte arquivos binários em código hexadecimal, depois de muita pesquisa consegui converter os arquivos corretamente para HEX, mas estou tendo problemas em fazer o processo inverso.char *fnp = "imagem.png";
size_t size;
FILE *fp;
fp = fopen(fnp,"rb");
if( fp == NULL )
{
perror("Error while opening the file.\n");
exit(EXIT_FAILURE);
}
// Move o ponteiro para o final do arquivo
fseek(fp,0,SEEK_END);
// pega a posicao atual do ponteiro no arquivo
size = ftell(fp);
// Volta o ponteiro para a posicao inicial do arquivo
rewind(fp);
/*
* Listagem do conteudo do arquivo em hexadecimal
*/
char *sfinal = malloc((size * 8) + 1);
size_t i;
char *buffer = NULL;
int brk = 0;
buffer = malloc(size + 1);
fread(buffer, 1, size, fp);
for(i = 0; i < size; i++)
{
char hex[8];
sprintf(hex, "%.2X ", (unsigned int) buffer[i] & 0xff);
strcat( sfinal, hex );
if( !(++brk % 16) ) strcat( sfinal, "\n" );
}
free(buffer);
buffer = NULL;
//Fechamento do arquivo
fclose(fp);
Atenção a quem posta conteúdo de dicas, scripts e tal (6)
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
O mínimo que você precisa saber sobre o terminal (parte 2)
O mínimo que você precisa saber sobre o terminal (parte 1)
Como iniciar uma máquina virtual do VirtualBox automaticamente no boot do LUbuntu 18 LTS
Como deixar as abas do Firefox mais fininhas
Mudar o gerenciador de login (GDM para SDDM)
"Tentando" fazer com que programas rodem no Wayland e no X11
Desktop travando e encerrando a execução (4)
Windows XP rodando no Linux (4)
Google Chrome não para de escrever no disco (4)