IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Vérification CRC en C++


Sujet :

C++

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Août 2015
    Messages : 6
    Points : 10
    Points
    10
    Par défaut Vérification CRC en C++
    Bonjour,

    Je crée un logiciel qui aura pour but d'interpréter les messages ADS-B des avions. Ces messages, dans leur forme binaire, ont un corps de 88 bits, et une somme de contrôle de 24 bits.
    Le polynôme pour générer la somme de contrôle est de 24+1 caractères, soit 25 : 1111111111111010000001001

    J'essaye donc de vérifier cette somme de contrôle, mais j'ai vraiment du mal... J'ai suivi un cours sur developpez.com mais je n'arrive pas à faire ce que je veux, le programme m'indique que le message est faux alors qu'il est juste :/ Pourriez-vous me dire ce qui ne va pas ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    #include <iostream>
    #include <String>
     
    int main() {
        std::string binMessage; // 88 bits + 24 checksum bits = 112 total
        std::string crc;
        std::string polynom = "1111111111111010000001001"; // 25 bits
     
        std::cout << "Entrer message : ";
        std::cin >> binMessage;
     
        crc = binMessage.substr(88, 24); // Sauvegarde du CRC transmis
     
        for(int i = 0; i != 88; i++) { // Pour les 88 bits du messages
            if(binMessage.substr(i, 1) == "1") { // Si on a 1
                for(int j = 0; j != 25; j++) { // Alors pour les 25 caractères suivant, dont le 1
                    if(binMessage[i + j] != polynom[j]) { // On fait un XOR avec le polynôme
                        binMessage.replace(i + j, 1, "1");
                    }
     
                    else {
                        binMessage.replace(i + j, 1, "0");
                    }
                }
            }
        }
     
        if(binMessage.substr(88, 24) == crc) {
            std::cout << "Message valide !";
        }
     
        else {
            std::cout << "Message invalide.";
        }
     
        return 0;
    }
    Je vous propose d'essayer avec 1000110101001000010000001101011000100000001011001100001101110001110000110010110011100000010101110110000010011000 qui est un message correct.

    Merci beaucoup d'avance

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Août 2015
    Messages : 6
    Points : 10
    Points
    10
    Par défaut


    Pour que le message soit valide, il faut que les 24 derniers bits du message soient égaux à 0.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.NET] Vérification d'existance d'une table
    Par Hoegaarden dans le forum Windows Forms
    Réponses: 3
    Dernier message: 18/05/2004, 10h17
  2. générer un CRC
    Par Eugénie dans le forum MFC
    Réponses: 43
    Dernier message: 22/12/2003, 15h53
  3. JavaScript de vérification de formulaire
    Par [DreaMs] dans le forum XMLRAD
    Réponses: 6
    Dernier message: 26/02/2003, 13h48
  4. Cherche l'algo crc 16 bits
    Par icepower dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 21/08/2002, 13h27
  5. codes crc
    Par patturbo dans le forum C++Builder
    Réponses: 7
    Dernier message: 24/07/2002, 09h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo