Multiplier 2 valeurs hexa qui donne un résultat à plus de 8 caractéres

Résolu
el_lokitto Messages postés 5 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 22 avril 2006 - 26 mars 2006 à 14:58
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 - 27 mars 2006 à 16:32
bonjour encore une fois!
je suis entrain de cartonner au niveau question sur le forum là!
bref, en faite j'aimerais effectuer un calcul: multiplier deux valeurs hexa
multiplier 51EB851F par 32C2CE
et avoir un résultat.
si j'utilise la calculette windows je trouve = 103E5666749CF2
ici 14 caractéres, et quand j'esseye de le faire avec VB il me sort Dépassement de capacité!
merci de bien vouloir y réflichir!
aurevoir!

¡ lokitto !
A voir également:

4 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
26 mars 2006 à 19:04
Re
En cherchant un peu, j'ai trouvé cette simple fonction qui semble fonctionner :
Public Function BigDecToHex(ByVal DecNum) As String
' This function is 100% accurate untill
' 15,000,000,000,000,000 (1.5E+16)
Dim NextHexDigit As Double
Dim HexNum As String
HexNum = ""
While DecNum <> 0
NextHexDigit = DecNum - (Int(DecNum / 16) * 16)
If NextHexDigit < 10 Then
HexNum = Chr(Asc(NextHexDigit)) & HexNum
Else
HexNum = Chr(Asc("A") + NextHexDigit - 10) & HexNum
End If
DecNum = Int(DecNum / 16)
Wend If HexNum "" Then HexNum "0"
BigDecToHex = HexNum
End Function

Ouf, j'ai failli perdre la face

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accroit quand on le partage (Socrate)
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
26 mars 2006 à 17:49
Salut
Et tu ne nous dis pas comment tu as fait, sinon, on aurait pu te dire ce qui n'allait pas ...
Mais comme je suis champion du monde de boule cristal 2005, je consulte ... (30 sec)
Bon, alors, comme tu n'as pas pu multiplier directement tes nombres sous forme Hexa, tu les donc convertis en décimal.
Ton 1er nombre = 1.374.389.535 décimal --> Dans un Long, pas de problème
Le 2eme nombre = 3.326.670 décimal : Idem
Par contre, le résultat donne 4.572.140.434.398.450
Or, les variables de type Long ne peuvent aller que jusqu'à 2.147.483.647
D'où l'erreur de dépassement de capacité.
Change donc les types de tes variables --> Decimal
Mais ce type n'est pas géré directement par VB car c'est une suite d'entiers.
Comme expliqué dans l'aide , il faut dimensionner tes variables en type Variant puis utiliser les fonctions de conversion :
Dim r As Variant
Dim Var1 As Variant
Dim Var2 As Variant
Var1 = CDec(1374389535)
Var2 = CDec(3326670)
r = CDec(Var1 * Var2)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accroit quand on le partage (Socrate)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
26 mars 2006 à 18:19
lol, je rigole moins :
Ton histoire de conversion d'hexa ... coton, je n'avais pas été assez loin.
Je bosse dessus ... je reviens
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
27 mars 2006 à 16:32
Salut i lokitto, et salut à tous,

m'en veux pas i lokitto!
Et bien vu Jack,
Pourquoi je suis là? Je voulais juste préciser à i lokitto que s'il veut, il existe un code hallucinant (pas qu'un, mais j'aime bien celui là, sinon, cherches "grand nombres") d'opérations sur les grands nombres, réalisé par DHKold, ici :
http://www.vbfrance.com/codes/ENSEMBLE-FONCTION-MATHEMATIQUE-POUR-TRES-GRAND-NOMBRES_7338.aspx

Et aussi préciser aux utilisateurs d'NT 4.0 ou plutôt de calc.exe(v.4.0), qu'elle n'est pas en mesure d'effectuer ce "petit calcul", enfin spécifié par lokitto, il faut attendre la version 5.0 (W2k).

à+,


rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>
0
Rejoignez-nous