// convert raw bits to signed decimal ascii numerals // // compile with: g++ -std=c++0x numconv-32bit.c #include using namespace std; #include /* for read() */ #include int main(int argc, char const ** argv){ static_assert (sizeof(int) == 4, "sizeof(int) is not correct"); union {int foo; char bar[4];}; foo = 0; bar[0] = -1; if (foo != 255) { cerr << " Host machine is not little-endian" << endl; exit (1); } int fd(0); // stdin char const * progname = *argv++; argc--; if (progname); int cols = 1; if (argc > 0) { cols = atoi(*argv++); argc--; } int buf[cols]; for (;;) { int rslt = read(fd, buf, sizeof(buf)); if (rslt <= 0) break; // EoF or error (don't care which) for (int ii = 0; ii < cols; ii++) { cout << setw(12) << buf[ii] << ","; } cout << endl; } }