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 ?
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"
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.
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.
Il n'y a pas de soucis avec la division binaire et je pense que j'ai compris la notion de polynome.
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); }
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"
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager