bonjour,
J'ai dans excel, une colonne replie de valeurs écrites en hexadecimal (sur deux caractères)
Ex :
cellule A1 = 01
cellule A2 = C1
cellule A3 = CE
...
J'ai des fonctions écrites en langage C qui me permettent de calculer un checksum
Mon checksum est compris entre 0 et 65535 (0x0000 et 0xFFFF)
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 // fonctions de calcul de checksum unsigned int I2C_CRC; // initialise la fonction de checksum void CRC_Init(void){ I2C_CRC = 0xFFFF; } // ajoute un octet au calcul du checksum void CRC_AddByte(unsigned char myVal){ unsigned char j, myflag; I2C_CRC ^= (unsigned int)(myVal); // XOR for (j=0; j<8; j++) { myflag = (I2C_CRC & 0x0001); //On récupère le dernier bit I2C_CRC >>= 1; // décalage 1 coup a droite if (myflag){ I2C_CRC ^= 0xA001; // si le dernier bit vaut 1 -> on fait un Xor avec 0xA001 } } } // récupère la valeur du CRC en cours unsigned int CRC_Get(void){ return I2C_CRC; }
1- j'initialise le checksum en lançant la fonction CRC_Init()
2- j'ajoute mes éléments en utilisant la fonction CRC_AddByte(maValeur)
3- je recupère la valeur de mon checksum en lançant la commande CRC_Get()
=> comment faire pour traduire cette fonction en VBA (je ne vois pas comment faire les opérations logiques (xor), les conversions en hexa et la limitation sur 16 bits de la valeur du checksum en VBA) ?
Partager