Accueil > FAQ > WinDev Fenêtres | FAQ |
Demandé et répondu par R&B le 27-Sep-2004 12:14 (4501 Lectures)
Calculer le CRC 16 utilisé dans le protocole XModem
Extrait d'un post de Kristian Paradis sur le forum de daussy.org :
J'avais demandé il y a peu de l'aide pour calculer le CRC 16 utilisé dans le protocole XModem.
J'ai finalement été capable d'adapter un algorithme de C++ que j'ai trouvé alors voila, si quelqu'un d'autre en a besoin.
(Ou si vous trouvez une faille, vous pouvez m'en faire part! ;))
Kristian Paradis
J'avais demandé il y a peu de l'aide pour calculer le CRC 16 utilisé dans le protocole XModem.
J'ai finalement été capable d'adapter un algorithme de C++ que j'ai trouvé alors voila, si quelqu'un d'autre en a besoin.
(Ou si vous trouvez une faille, vous pouvez m'en faire part! ;))
Procédure mCalculerCRC(_Chaine)
//Renvoie une chaine sur 2 octets.
eBit est un entier
eOctet est un entier
eCaract est un entier sans signe
eCRC est un entier sans signe
cChaine est une chaine = _Chaine
pour eOctet = 1 a taille(cChaine)
eCaract = asc(cChaine[[eOctet]])*0x100
eCRC = ouexbinaire(eCRC,eCaract)
pour eBit = 0 a 7
si etbinaire(eCRC,0x8000) <> 0 alors
eCRC = eCRC * 2
eCRC = ouexbinaire(eCRC,0x1021)
sinon
eCRC = eCRC * 2
FIN
fin
eCRC = etbinaire(eCrC,0xFFFF)
FIN
renvoyer caract(partieentiere(eCrC/256)) + caract(modulo(eCrc,256))
Kristian Paradis
|