Visualizador binário

Publicado por Geraldo José Ferreira Chagas Júnior 08/09/2008

[ Hits: 6.461 ]

Homepage: http://prginfo.blogspot.com

Download viewbin.c




Visualiza o conteúdo de um arquivo em binário.

  



Esconder código-fonte

/* viwbin.c */

#include <stdio.h>
#define iifc(expr) ((expr) ? ('1') : ('0'))

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

int main (int argc, char* argv[])
{
   FILE *arq;
   char buf[9];
   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);

      }

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

      contByteLin ++;
   }

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

void byteToBin (char b, char* bin)
{
   bin [0] = iifc (b & 0x80);
   bin [1] = iifc (b & 0x40);
   bin [2] = iifc (b & 0x20);
   bin [3] = iifc (b & 0x10);
   bin [4] = iifc (b & 0x8);
   bin [5] = iifc (b & 0x4);
   bin [6] = iifc (b & 0x2);
   bin [7] = iifc (b & 0x1);
   bin [8] = '{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

Velha reversa

Crônometro Digital em CURSES

Dado determinados números, retorna-os em ordem crescente

Realizando exponenciação interativa

Uso do Comando Printf


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts