Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: Logo Logo cataclysm no meu pc
Por removido
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Scripts

Linux user

Publicado por Geraldo José Ferreira Chagas Júnior em 08/09/2008    [ 4430 hits ]

Login: gjr_rj, 488985 pontos

Homepage: http://prginfo.blogspot.com   


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] = '{FONTE}';
}

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] = '{FONTE}';    
}

Scripts recomendados
   Script Linux recomendado Manipulação de BITS em C
   Script Linux recomendado Seu quarto programa em C
   Script Linux recomendado Passar uma string pra caixa alta.
   Script Linux recomendado putchar
   Script Linux recomendado Simulador de teatro

Comentários
[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()"



Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.