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