bonjour à tous,

je voudrais faire un calcul avec des "unsigned integer" qui génére parfois des dépassements de capacité mais qui sont normaux

j'ai écrit un code mais il est très moche à lire ... et je me demandais s'il n'y avait pas une plus belle écriture possible

le calcul normal est :
a += ((b << 4) + k0) Xor (b + sum) Xor ((b >> 5) + k1)
donc comme ce calcul dépasse parfois la taille d'un Uint , je passe par des variables temp qui sont en Ulong (2 fois la taille) et je filtre après

voila mon code pas beau
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
Dim a As UInteger
Dim b As UInteger
Dim k0 As UInteger
Dim k1 As UInteger
Dim temp1 As ULong
Dim temp2 As ULong
Dim temp3 As ULong
Dim temp4 As ULong
Dim delta As UInteger = 2654435769
Dim sum As UInteger = 0
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
temp1 = (b << 4)
temp1 += k0
temp2 = b
temp2 += sum
temp3 = b >> 5
temp3 += k1
temp4 = a + ((temp1 Xor temp2 Xor temp3) And &HFFFFFFFFUI)
a = temp4 And &HFFFFFFFFUI
merci de votre aide

personne peut m'aider à mieux écrire le code ?

j'ai essayé avec CLng() mais toujours la meme erreur