rendered paste body#include <stdlib.h>
#include <stdio.h>
#define split_number 8
FILE *outf[split_number*split_number];
void open_files() {
char names[1024];
int i;
for (i=0;i<split_number*split_number;i++) {
sprintf(names,"23_18_%u.dat",i);
outf[i]=fopen(names,"wb");
};
}
void close_files() {
int i;
for (i=0;i<split_number*split_number;i++) {
fclose(outf[i]);
};
}
void write_out(unsigned int x, unsigned int y, char *buf, int bufp) {
unsigned int p;
unsigned int x1,y1;
x1=x/(256/split_number);
y1=y/(256/split_number);
p=x1*split_number+y1;
fwrite(buf,bufp+2,1,outf[p]);
};
void main () {
FILE *inf;
char buf[65535];
unsigned int buf_pointer;
union {
char a[2];
unsigned short int b_int;
} bb;
char *ss1;
char *ss2;
unsigned int x,y;
unsigned short int *b_int;
int r;
inf=fopen("23_18_conv.dat","r");
open_files();
int j,i;
fseek(inf,18,SEEK_SET);
for (x=0;x<256;x++) {
for (y=0;y<256;y++) {
buf_pointer=0;
r=fread(&buf[buf_pointer],2,1,inf);
bb.a[1]=buf[buf_pointer+1];
bb.a[0]=buf[buf_pointer];
if (bb.b_int>2048) {
printf("error %u\n",bb.b_int);
exit(1);
};
if (bb.b_int==0) {
buf_pointer+=2;
r=fread(&buf[buf_pointer],2,1,inf);
buf_pointer+=2;
r+fread(&buf[buf_pointer],2,1,inf);
write_out(x,y,&buf[0],buf_pointer);
} else if ( bb.b_int == 64) {
for (i=0;i<64;i++) {
buf_pointer+=2;
r=fread(&buf[buf_pointer],2,1,inf);
};
write_out(x,y,&buf[0],buf_pointer);
} else {
for (i=0;i<64;i++) {
buf_pointer+=2;
r=fread(&buf[buf_pointer],2,1,inf);
bb.a[1]=buf[buf_pointer+1];
bb.a[0]=buf[buf_pointer];
for (j=0;j<bb.b_int;j++) {
buf_pointer+=2;
r=fread(&buf[buf_pointer],2,1,inf);
};
};
write_out(x,y,&buf[0],buf_pointer);
};
};
};
fclose(inf);
close_files();
}