Bonjour,

j'ai une appli Windev en cours de de migration vers PHP et après plusieurs heures de recherche je bloque sur le calcul du CRC.

La fonction Windev permettant le calcul du CRC16 :
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
PROCEDURE calcul_crc(la_chaine est une chaîne)
i,l,crc sont des entiers sans signe sur 2 octet
j,k est un entier sans signe sur 1 octet
crc_haut, crc_bas sont des entiers sans signe sur 1 octet
temp,c est une chaîne
temp=la_chaine
i=Taille(la_chaine)
crc=0
TANTQUE i<> 0
	j=Asc(Gauche(temp,1))
	l=0
	TANTQUE l < 8
		k=ETBinaire(OUExclusifBinaire(j,crc),1)
		crc=crc/2
		SI k <> 0 ALORS
			crc=OUExclusifBinaire(crc,0xA001)
		FIN
		j=j/2
		l=l+1
	FIN
	i--
	temp=Droite(temp,Taille(temp)-1)
FIN
crc_haut=ETBinaire(crc,0xFF00)/0x0100
crc_bas=ETBinaire(crc,0x00FF)
 
SI crc_haut=0x1A OU crc_haut=0x1B OU crc_haut=8 ALORS
	crc_haut=0x99 
FIN
SI crc_bas=0x1A OU crc_bas=0x1B OU crc_bas=8 ALORS
	crc_bas=0x99 
FIN
c=Caract(crc_haut)+Caract(crc_bas)
RENVOYER c
Merci par avance pour vos lumières.