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

Résolu/Fermé
kowalskic2 Messages postés 6 Date d'inscription jeudi 2 novembre 2017 Statut Membre Dernière intervention 23 novembre 2017 - Modifié le 4 nov. 2017 à 01:52
kowalskic2 Messages postés 6 Date d'inscription jeudi 2 novembre 2017 Statut Membre Dernière intervention 23 novembre 2017 - 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.
A voir également:

3 réponses

Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
4 nov. 2017 à 13:05
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 jeudi 2 novembre 2017 Statut Membre Dernière intervention 23 novembre 2017
5 nov. 2017 à 15:48
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 23327 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 novembre 2024 1 551
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;
    }
}
0
kowalskic2 > yg_be Messages postés 23327 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 novembre 2024
7 nov. 2017 à 17:49
merci beacoup
0
yg_be Messages postés 23327 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 novembre 2024 1 551 > kowalskic2
23 nov. 2017 à 18:59
peux-tu marquer comme résolu?
0
kowalskic2 Messages postés 6 Date d'inscription jeudi 2 novembre 2017 Statut Membre Dernière intervention 23 novembre 2017
23 nov. 2017 à 19:06
ok
0