Pular para o conteúdo

hexfile - conversor de binario/hexadecimal

Esse programa faz a leitura de um arquivo binário, por exemplo, um *.png e converte para um arquivo de texto *.hex, onde se encontra os valores hexadecimal, e também pode compilar um *.hex de volta para *.png, caso queira!
modo de usar:
abrir
./hexfile -a imagem.png
compilar
./hexfile -f imagem.png.hex
Perfil removido removido
Hits: 849 Categoria: C/C++ Subcategoria: Manipulação de arquivos
  • Download
  • Nova versão
  • Indicar
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Descrição

Esse programa faz a leitura de um arquivo binário, por exemplo, um *.png e converte para um arquivo de texto *.hex, onde se encontra os valores hexadecimal, e também pode compilar um *.hex de volta para *.png, caso queira!
modo de usar:
abrir
./hexfile -a imagem.png
compilar
./hexfile -f imagem.png.hex
Download hexfile.c Enviar nova versão
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Esconder código-fonte

#include <stdio.h>
#include <string.h>
#include <errno.h>
    int main(int argc, char *argv[]){
      // abre e fecha arquivos
      FILE *fileOpen, *fileClose;
      // byte a byte
      int byte = 0;
      // uso ./hexfile -a (abrir)
      // ou ./hexfile -f (fechar)
      if(strcmp(argv[1], "-a") == 0){
          fileOpen = fopen(argv[2], "r");
          // caso der [*****]
         if(fileOpen == NULL){
            perror("Erro de leitura");
            return 1;
         }
         // concatenação com extenção .hex
          char name[256];
          strcpy(name, argv[2]);
          strcat(name, ".hex");
          fileClose = fopen(name, "w");
          // caso der [*****]
         if(fileClose == NULL){
            perror("Erro de escrita");
            return 1;
         }
         /* captura um byte de cada vez e escreve
         em um arquivo *.hex */
          while((byte = fgetc(fileOpen)) != EOF){
             fprintf(fileClose, "%X ", byte);   
         }
         // fecha
         fclose(fileOpen);
         fclose(fileClose);   
      } else if(strcmp(argv[1], "-f") == 0){
         // faz a edição para nome original
            char name[256];
         strcpy(name, argv[2]);
         name[strlen(name)-4]='\0';
         fileOpen = fopen(argv[2], "r");
         // caso der [*****]
         if(fileOpen == NULL){
            perror("Erro de leitura");
            return 1;
         }
         fileClose = fopen(name, "wb");
         if(fileClose == NULL){
            perror("Erro de escrita");
         }
         // faz a leitura do *.hex e salva binario
         while(fscanf(fileOpen, "%X", &byte) == 1){
            fputc((unsigned char)byte, fileClose);            
         }
         // fecha
         fclose(fileOpen);
         fclose(fileClose);
      }
      else{
         // help
          printf("use: ./hexfile -a [arquivo]\n");
          printf("use: ./hexfile -f [arquivo]\n");   
      }
      
       return 0;   
   }
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

read_log_conf

Números de caracteres em arquivo

gerador de BMPs

Fatorial

Pilhas C/C++ - Pares e ímpares

#1 Comentário enviado por SamL em 11/01/2026 - 11:41h
O código tá bacana, só lhe chamo atenção ao detalhe do nome dos arquivos (fileOpen e fileClose).
Observe que estes podem ser melhorados se forem algo como fileIn e fileOut, porque o que estas variáveis representam na verdade são um "arquvo de entrada" e um "arquivo de saída".

Em computação e programação, vc de vez em quando vai lidar com variáveis de entrada (input) e variáveis de saída (output).
Então, faz sentido nomear variáveis dessa natureza como In/Out.

Fica ai a dica.


______________________________
https://nerdki.blogspot.com.br/ acessa ai, é grátis!
#2 Comentário enviado por removido em 11/01/2026 - 17:43h

Obrigado!
Vou acolher sua dica, vai ser de grande ajuda!
Abraço!

Contribuir com comentário

Entre na sua conta para comentar.