Conversion code VBA en Python avec Xor

Python est le langage de prédilection du Raspberry Pi

Modérateurs : Francois, Manfraid

Répondre
Nidog
Messages : 13
Enregistré le : mer. 11 juil. 2018 18:05

Conversion code VBA en Python avec Xor

Message par Nidog » lun. 10 sept. 2018 11:51

Bonjour à tous,

Je bloque sur la conversion d'un code VBA vers Python suite à la présence d'un Xor...
J'ai du mal à trouver la manière exacte de le gérer.

Le code VBA :

Code : Tout sélectionner

    checksum_sys = &H5A
    For Offset = 1 To Len(trame_totale) Step 2
        checksum_sys = checksum_sys Xor Val("&h" + Mid(trame_totale, Offset, 2))
    Next Offset
    
    Checksum_Systeme = checksum_sys
J'ai tenté ceci en PY, sans succès :

Code : Tout sélectionner

poursuite_bloc_systeme = 450200000000010000000000000003000000020000000400000001000000f5ffffff

for z in ([poursuite_bloc_systeme[p:p+2] for p in range(0,len(poursuite_bloc_systeme),2]):
	somme_trame_systeme += bool(z)
Normalement, je dois trouver au final

Code : Tout sélectionner

somme_trame_systeme = 12
Mais ce n'est pas le cas...

Je vous remercie pour votre aide ! :)

Bud Spencer
Raspinaute
Messages : 403
Enregistré le : lun. 15 août 2016 21:38

Re: Conversion code VBA en Python avec Xor

Message par Bud Spencer » mar. 11 sept. 2018 17:36

Code VBA

Code : Tout sélectionner


trame_totale = "450200000000010000000000000003000000020000000400000001000000f5ffffff"
checksum_sys = &H5A

For Offset = 1 To Len(trame_totale) Step 2
    checksum_sys = checksum_sys Xor Val("&h" + Mid(trame_totale, Offset, 2))
Next Offset

Checksum_Systeme = checksum_sys

Code Python

Code : Tout sélectionner


trame_totale = "450200000000010000000000000003000000020000000400000001000000f5ffffff"
checksum_sys = 0x5A

for Offset in range (0,len(trame_totale),2):
    checksum_sys = checksum_sys ^ int(trame_totale[Offset:Offset+2],16)

Checksum_Systeme = checksum_sys

Dans les 2 cas le résultat de Checksum_Systeme = 18
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

Répondre

Retourner vers « Python »