hexfile - conversor de binario/hexadecimal

Publicado por smith unix (última atualização em 09/01/2026)

[ Hits: 579 ]

Download hexfile.c




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

  



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 merda
         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 merda
         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 merda
         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;   
   }

Scripts recomendados

Ler config

Xml2Txt

leitura/escrita de dados/estruturas em arquivo

Cadastro de Alunos Versao 1.0

Super Truco


  

Comentários
[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 smithunix em 11/01/2026 - 17:43h


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


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts