#include #include FILE *src,*dst; char buffer[16]; int crc,count=0,buffercount; void datarecord(void); void highbitrecord(void); void endrecord(void); void startline(void); void endline(void); void writebyte(int byte); int main(int argc, char *argv[]) { if (argc!=3) { printf("Usage: bin2hex64 \n"); exit(0); } if (src=fopen(argv[1],"rb")) { if (dst=fopen(argv[2],"w")) { while (buffercount=fread(buffer,1,16,src)) { if (!(count&0xffff)) highbitrecord(); datarecord(); count+=buffercount; } endrecord(); } else { fclose(src); printf("Unable to open destination file ->%s<- for writing\n",argv[2]); exit(0); } } else { printf("Unable to open source file ->%s<- for reading\n",argv[1]); exit(0); } } void datarecord(void) { int i; startline(); writebyte(buffercount); writebyte(count>>8); writebyte(count); writebyte(0); for(i=0;i>24); writebyte(count>>16); endline(); } void endrecord(void) { startline(); writebyte(0x00); writebyte(0x00); writebyte(0x00); writebyte(0x01); endline(); } void startline(void) { crc=0; fputc(':',dst); } void endline(void) { crc=(0-crc)&0xff; fprintf(dst,"%02X\n",crc); } void writebyte(int byte) { byte&=0xff; // just to be sure crc+=byte; fprintf(dst,"%02X",byte); }