Signaler

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

Posez votre question kowalskic2 2Messages postés jeudi 2 novembre 2017Date d'inscription 5 novembre 2017 Dernière intervention - Dernière réponse le 7 nov. 2017 à 17:49 par kowalskic2
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.
Utile
+1
plus moins
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;
    }
}
Donnez votre avis
Utile
+0
plus moins
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 3752Messages postés lundi 9 juin 2008Date d'inscription ContributeurStatut 9 novembre 2017 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;
    }
}
Répondre
kowalskic2- 7 nov. 2017 à 17:49
merci beacoup
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !