これだとアライメントが揃ってない読み込みでifstreamが壊れる。
 ifstream ifs ("dump.bin");
 char buf_1 = -1;
 short buf_2 = -1;
 int  buf_4 = -1;
 ifs >> buf_1 >> buf_2 >> buf_4;
 printf ("buf_1 = %x\n", buf_1);
 printf ("buf_2 = %x\n", buf_2);
 printf ("buf_4 = %x\n", buf_4);
バイナリデータは01 02 00 04 00 00 00 ...
実行結果は、
buf_1 = 1
buf_2 = 0
buf_4 = ffffffff