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.276 Categoria: C/C++ Subcategoria: Introdução
  • 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

Visualiza o conteúdo de um arquivo em escala hexadecimal.
Download viewhex.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

/* 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';    
}
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.

Ordenação QuickSort

Parte 5 - Sessão de estudo sobre VETORES

Problema de Equação do Primeiro Grau

Números primos

Verificar intervalo de números

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