Pular para o conteúdo

Visualizador hexadecimal

Visualiza o conteúdo de um arquivo em escala hexadecimal.
Geraldo José Ferreira Chagas Júnior gjr_rj
Hits: 9.282 Categoria: C/C++ Subcategoria: Introdução
  • Download
  • Nova versão
  • Indicar
  • Denunciar

Descrição

Visualiza o conteúdo de um arquivo em escala hexadecimal.
Download viewhex.c Enviar nova versão

Esconder código-fonte

/* viwhexa.c */

#include <stdio.h>

void byteToHexa (unsigned char b, char* hex);
void intTohex (unsigned long int b, char* hex);

int main (int argc, char* argv[])
{
   FILE *arq;
   char buf[3];
   int  contByteLin=0;
   unsigned long int contLin=1;
   char pos [9];

   int f;

   if (argc!=2)
   {
      printf ("Parametro incorreto.\n");
      printf ("Informe apenas o nome do arquivo\n");
      return 1;
   }

   if (!(arq=fopen(argv[1],"r")))
   {
      printf ("Nao foi possivel abrir o arquivo!\n");
      return 1;
   }

   printf ("           00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F\n");
   printf ("           -----------------------------------------------\n");
   printf ("00000000 | ");
   while (f=fread(buf,1,1,arq))
   {
      if (contByteLin==16)
      {
         contByteLin = 0;
         printf ("\n");
         
         if ((contLin % 0x10) == 0)
         {
            printf ("           -----------------------------------------------\n");
            printf ("           00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F\n");
            printf ("           -----------------------------------------------\n");
         }

         intTohex (contLin++, pos);
         printf ("%s | ",pos);
      }

      byteToHexa (buf[0],buf);
      printf ("%s ",buf);

      contByteLin ++;
   }

   printf ("\n");
   close (arq);
}

void byteToHexa (unsigned char b, char* hex)
{
   char vet[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
   int r;
   int i;

   r = b % 16;
   i = (b - r)/16;
   hex[0] = vet[i];
   hex[1] = vet[r];
   hex[2] = '\0';
}

void intTohex (unsigned long int b, char* hex)
{
   char vet[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
   unsigned long int r;

   r = b % 0x10; hex[7] = vet[r]; b = b >> 0x4;
   r = b % 0x10; hex[6] = vet[r]; b = b >> 0x4;
   r = b % 0x10; hex[5] = vet[r]; b = b >> 0x4;
   r = b % 0x10; hex[4] = vet[r]; b = b >> 0x4;
   r = b % 0x10; hex[3] = vet[r]; b = b >> 0x4;
   r = b % 0x10; hex[2] = vet[r]; b = b >> 0x4;
   r = b % 0x10; hex[1] = vet[r]; b = b >> 0x4;

   hex[0] = vet[b]; 
   hex[8] = '\0';    
}

Tabela ASCII

VERIFICADOR DE CPF EM NCURSES

Jogo do Labirinto no Terminal

Hello world em COBOL

Primeiro programa em C

#1 Comentário enviado por zafar em 13/10/2011 - 09:45h
Fui compilar no Dev-cpp apareceu o seguinte erro no código:

57 `close' undeclared (first use this function)


Como faço para corrigir
#2 Comentário enviado por lacabeza em 11/04/2012 - 23:59h
ainda não testei mas posso adiantar que no lugar de "close()", é "fclose()"
#3 Comentário enviado por ecordeiro em 06/03/2013 - 07:51h
Bom dia amigo.

Me deparei com um problema no meu trabalho (Gráfica) onde estou tendo que manipular um arquivo de spool de impressão IBM.
Um arquivo no formato AFP.

Para manipular este arquivo tenho que trabalhar em hexadecimal.
Uso o ExEdit para visualizar seu conteúdo, mas para fazer os tratamento necessários tenho que desenvolver aplicações para manipular o mesmo.

E aqui no vl encontrei seu scipt em C, e funcionou bem, porém não leu o arquivo completamento.
Gostaria de saber se você poderia me ajudar quanto a manipulação do arquivo.
Teria como você me detalhar o funcionamento de seu código em todos os passos das linhas.

Caso seja possível ficari muito grato, obrigado.

Contribuir com comentário

Entre na sua conta para comentar.