#include #include #include void bitdump(int fd) { unsigned char buff[8], out[72]; int n, i; while((n = read(fd, buff, 8)) == 8) { unsigned char* p = out; for(i = 0; i < 8; i++) { unsigned char c, mask; c = buff[i]; for(mask = 0x80; mask; mask >>= 1) *p++ = '0' + ((c & mask) != 0); *p++ = ' '; } p[-1] = '\n'; write(1, out, 72); } if(n > 0) { unsigned char* p = out; for(i = 0; i < n; i++) { unsigned char c, mask; c = buff[i]; for(mask = 0x80; mask; mask >>= 1) *p++ = '0' + ((c & mask) != 0); *p++ = ' '; } p[-1] = '\n'; write(1, out, 9 * n); } } int main(int argc, char** argv) { if(argc <= 1) bitdump(0); else { int i, fd; for(i = 1; i < argc; i++) { if((fd = open(argv[i], 0)) < 0) { perror(argv[i]); continue; } bitdump(fd); close(fd); } } return 0; }