1 #include <stdio.h>
2 #include <stdlib.h>
3
4 #define print(x) {fputs(x,stdout);}
5
dumpBytes(FILE * f)6 void dumpBytes(FILE *f)
7 {
8 int j=0, i, k, b;
9 unsigned char buf[16];
10
11 for(;;)
12 {
13 printf("%03X0: ",j);
14 ++j;
15
16 for(i=0; i<16; ++i)
17 {
18 b = fgetc(f);
19 if(b == EOF)
20 break;
21
22 printf("%02x ", buf[i] = (unsigned char)b);
23
24 if(i==7) putchar(' ');
25 }
26
27 if(b == EOF)
28 {
29 for(k=i; k<16; ++k)
30 {
31 if(k==7) putchar(' ');
32 print(" ");
33 }
34 }
35
36 print(" ");
37
38 for(k=0; k<i; ++k)
39 {
40 if((buf[k] > 31) && (buf[k] < 128))
41 putchar(buf[k]);
42 else
43 putchar('.');
44
45 if(k==7) putchar(' ');
46 }
47
48 putchar('\n');
49
50 if(b == EOF)
51 break;
52 }
53
54 putchar('\n');
55 }
56
main(int argc,char * argv[])57 int main(int argc, char *argv[])
58 {
59 FILE *f;
60 int i=0, c;
61
62 if(argc<2 || !(f = fopen(argv[1], "rb")))
63 {
64 printf("Gimme a file name.\n");
65 exit(1);
66 }
67
68 dumpBytes(f);
69
70 return 0;
71 }
72