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++Builder Discussion :

[SRC] Calcul de CRC


Sujet :

C++Builder

  1. #1
    Membre actif Avatar de cfdev
    Homme Profil pro
    Passionné
    Inscrit en
    Octobre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Passionné

    Informations forums :
    Inscription : Octobre 2004
    Messages : 220
    Points : 210
    Points
    210
    Par défaut [SRC] Calcul de CRC
    bonjours,
    j'ai un peu cherché, mais j'ai pas trouvé de Code d'exemple.
    je voudrais savoir si quelqu'un connais un site ou il y a des exemples de Calul de CRC16 et ou 32 directement en Cpp bien sur .

    merci
    ++

    Edition par la rédaction : retrouvez des exemples sur la page sources http://c.developpez.com/sources/bcb/?page=mathsalgo#crc et http://c.developpez.com/sources/bcb/?page=divers#crc2o
    mcercle facturation - Logiciel de facturation Win/Mac/Linux

  2. #2
    Membre du Club

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 28
    Points : 55
    Points
    55
    Par défaut
    Voilà les fonctions que j'utilise habituellement...

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    void main(void)
    {
    char SendBuff[50];
    int iLen = 0;
     
             //On remplit la chaine
            SendBuff[iLen++] = "C";
            SendBuff[iLen++] = "R";
            SendBuff[iLen++] = "C";
     
             //on calcule et on ajoute le CRC a la suite....
            CRC(&iLen);
     
            ........
    }
     
    void __fastcall CRC(int * iLen)
    {
    	UINT CRC = makeCRC(SendBuff, *iLen);
    	SendBuff[(*iLen)++] = (char) ((CRC >> 8) & 0x0ff);
    	SendBuff[(*iLen)++] = (char) (CRC & 0x0ff);
    }
     
     
    unsigned int __fastcall addCRC(unsigned int crc,char cc)
    {
    int bBCCorCRC = 0;
     
    	unsigned char c = (unsigned char)cc;
    	register unsigned int u;
    	unsigned int	t, ut, newcrc;
    	if (bBCCorCRC)
    	{
    		crc = crc >> 8;
    		crc ^= c;
    		newcrc = crc << 8;
    	}
    	else
    	{
    		t = crc ^  (unsigned int) c & 0xff;
    		u = t ^ ( t << 4) & 0xff;
    		ut = ( u & 0xf0) | ( t & 0x0f);
    		newcrc = ((crc >> 8) & 0xff) ^ (ut << 8) ^(ut << 3)
    			^ ((ut >> 4) & 0xff) & 0xffff;
    	}
    	return newcrc;
    }
     
     
    unsigned int __fastcall makeCRC(const char *c, int len)
    {
    	unsigned int crc;
    	crc = 0;
    	while( --len >= 0)
    	{
    		crc = addCRC(crc, *c++);
    	}
    	return (crc & 0xffff);
    }
    A+

  3. #3
    Membre actif Avatar de cfdev
    Homme Profil pro
    Passionné
    Inscrit en
    Octobre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Passionné

    Informations forums :
    Inscription : Octobre 2004
    Messages : 220
    Points : 210
    Points
    210
    Par défaut
    je te remercis , c'est super.
    ca permet de faire un CRC et de verifier aussi celui qu'on recoi ?

    merci encore.
    mcercle facturation - Logiciel de facturation Win/Mac/Linux

  4. #4
    Membre du Club

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 28
    Points : 55
    Points
    55
    Par défaut
    Je ne l'utilise que pour ajouter un CRC mais je suppose qu'en recalculant le CRC d'un message reçu et en le comparant ça devrait marcher (attention à ne pas inclure le CRC reçu lors du recalcul...)

    par exemple :

    message reçu:
    "CECIESTLEMESSAGE""CRC1"

    calcul CRC pour "CECIESTLEMESSAGE" donne "CRC2"

    reste plus qu'a comparer "CRC1" = "CRC2"

    Jamais essayé alors j'en sais pas plus...

    A+

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

Discussions similaires

  1. Calcul de CRC 64 bits
    Par pseudocode dans le forum Contribuez
    Réponses: 2
    Dernier message: 21/10/2007, 18h00
  2. recuperer (ou calculer le CRC d'un fichier)
    Par johannlb dans le forum VB.NET
    Réponses: 6
    Dernier message: 02/08/2007, 17h15
  3. Calcul de CRC
    Par boubajazz dans le forum Linux
    Réponses: 1
    Dernier message: 13/06/2007, 11h18
  4. calcul du CRC sur 2 octets
    Par jeannot27 dans le forum C++Builder
    Réponses: 6
    Dernier message: 19/12/2005, 10h55

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