Calcul du CRC de C à Python
Bonjour,
On m'a demandé de faire une fonction pour calculer un CRC en python,pour l'envoi et réception de trame en hexadécimal, afin de confirmer que les trames envoyées sont bien les bonnes, pour ce faire, on m'a donner l’organigramme de celui-ci, et aussi en se basant sur un code déjà écrit en C, cependant, je suis vraiment très novice en python, j'ai essayer de faire le code mais, les multiples erreurs me découragent, voici le code en C pour avoir plus d'idées:
Code:
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
| unsigned int16 CONTROL(unsigned char CARB, unsigned int16 CARCB)
{
int8 jb;
CAR = (int16)(CARB);
for(jb=0; jb<8; jb++)
{
if ((CRCB & 0x8000) ==0x8000)
{
CRCB = CRCB *2;
CAR = CAR*2;
if ((CAR & 0x100) != 0):
{
CRCB ++;
CRCB = CRCB ^ 0x1021
}
}
else
{
CRCB = CRCB*2;
CAR = CAR *2;
if ((CAR & 0x100) != 0):
{
CRCB ++;
}
}
}
return CRCB;
} |
J'ai essayé de l'ecrire en python mais j'ai commencer à avoir des erreurs au début, en essayant de déclarer int8 :(
voici mon code très mal écrit pour vous éviter de tout saisir:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| import numpy as np
i=int8 (i)
CAR = (int16)(CARB)
for i in range (0,8):
if (CRCB & 0x8000) ==0x8000:
CRCB = CRCB *2;
CAR = CAR*2;
if (CAR & 0x100) != 0:
CRCB += 1
CRCB = CRCB ^ 0x1021
else:
CRCB = CRCB *2;
CAR = CAR*2;
if (CAR & 0x100) != 0:
CRCB += 1 |
Des indications svp, je vous remercie