Comparer le bit actuel et le bit précédent d'un fichier

Résolu
kowalskic2 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
kowalskic2 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -
Salut à tous, tout est dans le titre. J’ai le code suivant :
While (fread(&octetActu,1,sizeof(octetActu),pFile)!=0)
  {
      for(k=0;k<8;k++)
        {j=(octetActu<<k)&128;
        printf("%02x",j);
        if(j!=j) {printf("j");}
        else{printf("jj");}}
}

donc ce que je cherche à faire, c’est de pouvoir comparer le bit actuel avec le bit précédent du début jusqu'à la fin du fichier pFile. En clair si j’ai deux octets codé sur 8bits chacun et qui se suivent, du genre :
11011001 et 01100111, de lettre respective abcdefgh et ijklmnop. J’aimerais pouvoir comparer le bit ‘a’ avec le bit ‘b’ puis le bit ‘b’ avec le bit ‘c’ ensuite le bit ‘c’ avec le bit ‘d’ et ainsi de suite jusqu'à la fin du fichier. je ne sais pas si un sujet similaire à déjà été posé dans le forum,mais si quelqu’un a une idée, je prends. Merci.
A voir également:

3 réponses

Dalfab Messages postés 706 Date d'inscription   Statut Membre Dernière intervention   101
 
Ligne 6, comparer j à j n'est certainement ce que tu veux, il faut comparer le nouveau j au j lu précédemment.
int jprec = -1;
while (fread(&octetActu,1,sizeof octetActu,pFile)>0) {
    for ( int k = 0 ; k < 8 ; k++ ) {
        int j = (octetActu<<k) & 128;
        printf("%02x",j);
        if ( j != jprec ) printf("j");
        else printf("jj");
        jprec = j;
    }
}
1
kowalskic2 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
Grand merci dalfab, ton code fonctionne apart qu'il compare le premier bit du fichier avec "jprec" avant de continuer. toutefois pour récapituler, jprec=-1 représente le bit précédemment lu, "j=jprec" met le bit actuel à la place du bit précédent afin de la comparer au bit suivant. es-ce bien cela?
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
pour éviter la première comparaison inutile, que tu faisais déjà dans ton code de départ:
int jprec = -1;
while (fread(&octetActu,1,sizeof octetActu,pFile)>0) {
    for ( int k = 0 ; k < 8 ; k++ ) {
        int j = (octetActu<<k) & 128;
        printf("%02x",j);
        if jprec != -1)
           if ( j != jprec ) 
                printf("j");
           else 
                printf("jj");
        jprec = j;
    }
}
0
kowalskic2 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
merci beacoup
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > kowalskic2
 
peux-tu marquer comme résolu?
0
kowalskic2 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
ok
0