Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.

Paste

Pasted as C by Sylphide ( 14 years ago )
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define BUFFERSIZE 1

int main() {
 FILE *f1 = fopen&#40;"image1.dd", "rb"&#41;;
 FILE *f2 = fopen&#40;"image2.dd", "rb"&#41;;

 //taille de l'image
 fseek (f1 , 0, SEEK_END);
 long size1 = ftell (f1);
 rewind (f1);
 //assert taille image1 = image2

 int new_percent = 0;
 int old_percent = 0;
 int diff = 0;
 long addr_begin = 0;
 long pos = 0;
 long total_diff = 0;

 char* buffer1;
 buffer1 = (char*) malloc(sizeof(char)*BUFFERSIZE);
 char* buffer2;
 buffer2 = (char*) malloc(sizeof(char)*BUFFERSIZE);

 while (!feof(f1) && !feof(f2)) {
  fread(buffer1, sizeof(char), BUFFERSIZE, f1);
  fread(buffer2, sizeof(char), BUFFERSIZE, f2);
  pos += BUFFERSIZE;
  //comparer les buffers
  if (strcmp(buffer1, buffer2)) {
   //bytes différents
   total_diff += BUFFERSIZE;
   //sauver la borne inférieure la première fois
   if (diff==0) {
    addr_begin = pos-1;
    diff = 1;
   }
  }
  else {
   //aucune différence : sauver l'intervalle si elle existe
   if (diff==1) {
    //todo: addr en hexa
    printf("addr %li - %li\n", addr_begin, pos-1-1);
    addr_begin = 0;
    diff = 0;
   }
  }
  //montrer le % unique avec une précision de 1
  new_percent = (int) ( ((double)pos/(double)size1) * 100.0 );
  if (new_percent != old_percent)
   printf("%i -\n", new_percent);
  old_percent = new_percent;
 }
 //différence à la fin de l'image
 if (diff==1) {
  //todo: addr en hexa
  printf("addr %li - %li\n", addr_begin, pos-1-1);
 }
 printf("%s = %f MB\n", "différence trouvée", (double)total_diff / (double)1048576);
 free(buffer1);
 free(buffer2);
 fclose(f1);
 fclose(f2);

 return 0;
}

 

Revise this Paste

Your Name: Code Language: