#include #include #include "io.h" int swap(int b){ //b=(((b & 0xff0000)>> 16)|((b & 0xff)<<16)|(b & 0xff00)); b=(((b & 0xff000000)>> 24)|((b & 0xff0000)>> 8)| ((b & 0xff)<<24) | ((b & 0xff00)<< 8)); return b; } int test_endian(void){ short int a=0x1000; char *b; b=(char *)&a; if (*(b+1)==0x10) { return 1; } else { return 0 ;} } int main(int argc , char ** argv){ int little_endian=test_endian(); int type; int run; int event; int mode; int n,j; char buf[1000000]; char nbuf[1000000]; short *s=(short *) nbuf; int *p=(int *) buf; char ss[128]; static int int_size=sizeof(int); static int short_size=sizeof(short); FILE *fp=fopen(argv[1],"r"); FILE *fo; sprintf(ss,"tmp/%s",argv[1]); fo=fopen(ss,"w"); printf("IsLittleEndian %d\n", little_endian); printf("int_size %d\n",int_size); fread(buf, int_size,7,fp); if (little_endian) for (j=0;j<7;j++) p[j]=swap(p[j]); // for (j=0;j<7;j++) printf("%5d ",p[j]); // getchar(); while (!feof(fp)){ fread(buf, int_size,7,fp); if (little_endian) for (j=0;j<7;j++) p[j]=swap(p[j]); for (j=0;j<7;j++) s[j]=p[j]; s[0]=s[0]/4; // for (j=0;j<7;j++) printf("%5d ",s[j]); fwrite(nbuf,short_size,7,fo); // printf("\n"); n=p[0]-int_size*7; //printf("Bytes to read %d\n",n); fread(buf,n,1,fp); if (little_endian) for (j=0;j