Comparer le bit actuel et le bit précédent d'un fichier [Résolu]

kowalskic2 6 Messages postés jeudi 2 novembre 2017Date d'inscription 23 novembre 2017 Dernière intervention - 4 nov. 2017 à 00:12 - Dernière réponse : kowalskic2 6 Messages postés jeudi 2 novembre 2017Date d'inscription 23 novembre 2017 Dernière intervention
- 23 nov. 2017 à 19:06
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.
Afficher la suite 

6 réponses

Répondre au sujet
Dalfab 301 Messages postés dimanche 7 février 2016Date d'inscription 13 janvier 2018 Dernière intervention - 4 nov. 2017 à 13:05
+1
Utile
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;
    }
}
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Dalfab
kowalskic2 6 Messages postés jeudi 2 novembre 2017Date d'inscription 23 novembre 2017 Dernière intervention - 5 nov. 2017 à 15:48
0
Utile
3
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?
yg_be 4381 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 16 janvier 2018 Dernière intervention - 5 nov. 2017 à 16:00
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;
    }
}
kowalskic2 > yg_be 4381 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 16 janvier 2018 Dernière intervention - 7 nov. 2017 à 17:49
merci beacoup
yg_be 4381 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 16 janvier 2018 Dernière intervention > kowalskic2 - 23 nov. 2017 à 18:59
peux-tu marquer comme résolu?
Commenter la réponse de kowalskic2
kowalskic2 6 Messages postés jeudi 2 novembre 2017Date d'inscription 23 novembre 2017 Dernière intervention - 23 nov. 2017 à 19:06
0
Utile
ok
Commenter la réponse de kowalskic2