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

Algorithmes et structures de données Discussion :

Algorithme CRC et autre


Sujet :

Algorithmes et structures de données

  1. #1
    Membre habitué
    Inscrit en
    Septembre 2008
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 234
    Points : 156
    Points
    156
    Par défaut Algorithme CRC et autre
    Bonjour,

    J'ai été me documenté sur les CRC mais j'ai du mal à comprendre le concepte. Comment réalises t-on le calcul d'un CRC ? Quel est le principe de base s'il y en a un ?
    Développeur en devenir.

    A la recherche de toute source approfondissant Merise, UML, Java, l'objet, les design patterns hors GOF et le développement en général.

    Recherche également des informations sur les techniques de développement et les bonnes pratiques en terme de programmation en entreprise.

    "On en apprends beaucoup plus par la confrontation que par la conciliation"

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Il y un tutoriel disponible ici meme:

    http://dvsoft.developpez.com/Articles/CRC
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Membre habitué
    Inscrit en
    Septembre 2008
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 234
    Points : 156
    Points
    156
    Par défaut
    Merci. Je me doutais qu'il y avais quelque chose à ce propos sur Developpez.com.

    Je ne suis pas suffisamment familier avec le C (C++ ?). Mais, si j'ai bien compris, il s'agit de totaliser la valeur de chaque caractère ANSI dans un byte et puis d'y appliquer un modulo 255 pour obtenir un reste. Je suppose aussi que l'utilisation d'un mot plus grand offre une plus grande "diversité" dans les résultats.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    typedef unsigned int        TU_int32;   // Mot de 32 bit non signé
    typedef unsigned short int  TU_int16;   // Mot de 16 bits non signé
    typedef unsigned char       TU_int8;    // Mot de 8 Bits non signé
     
    TU_int8 __fastcall CalcSomme(AnsiString Message)
    {
        TU_int8 iuResult = 0;   // Resultat sur 8 bits
        //--- Calcul de la somme, le premier caractère est en position 1
        for (int i = 1; i <= Message.Length(); i++)
            iuResult += Message[i];
        //--- Modulo Valeur Maxi sur 8 Bits
        return (iuResult %= 0xFF);
    }
    Il n'y a pas de soucis avec la division binaire et je pense que j'ai compris la notion de polynome.

    Pour l'implémentation technique, il va falloir que je fasse quelques gribouillis sur papier.
    Développeur en devenir.

    A la recherche de toute source approfondissant Merise, UML, Java, l'objet, les design patterns hors GOF et le développement en général.

    Recherche également des informations sur les techniques de développement et les bonnes pratiques en terme de programmation en entreprise.

    "On en apprends beaucoup plus par la confrontation que par la conciliation"

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par Jimalexp Voir le message
    Merci. Je me doutais qu'il y avais quelque chose à ce propos sur Developpez.com.

    Je ne suis pas suffisamment familier avec le C (C++ ?). Mais, si j'ai bien compris, il s'agit de totaliser la valeur de chaque caractère ANSI dans un byte et puis d'y appliquer un modulo 255 pour obtenir un reste. Je suppose aussi que l'utilisation d'un mot plus grand offre une plus grande "diversité" dans les résultats.
    Oui, tu as bien compris le principe. L'algo que tu décris (celui du chapitre 2) est une somme de controle (checksum) très simple, qui n'est pas tres robuste (cf. le chapitre 3)

    Le calcul du CRC est plus compliqué car il necessite de faire une division binaire avec un polynome qui n'est pas une puissance de 2. Donc il ne suffit pas de prendre les n-bits de poids faibles (avec un AND).

    Heureusement on peut effectuer facilement la division binaire de l'énnnoooorme valeur d'entrée par le polynome, en utilisant un registre comme le décrit le reste du tutoriel.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

Discussions similaires

  1. [AC-2007] Traduction d'un programme C en VBA (Algorithme CRC 8 bits)
    Par lerico dans le forum VBA Access
    Réponses: 3
    Dernier message: 16/04/2015, 11h25
  2. Imaginer un autre Algorithme
    Par Cool Raoul dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 20/11/2010, 23h28
  3. Algorithm correction des couleurs (balance des blancs et autre)
    Par immuno dans le forum Traitement d'images
    Réponses: 10
    Dernier message: 19/12/2008, 22h26
  4. Réponses: 0
    Dernier message: 06/03/2008, 11h38

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