Manipulation d'entier 64 bits en vb6 [Résolu]

cs_mateo1975 5 Messages postés jeudi 13 février 2003Date d'inscription 22 décembre 2005 Dernière intervention - 17 nov. 2005 à 16:36 - Dernière réponse : cs_mateo1975 5 Messages postés jeudi 13 février 2003Date d'inscription 22 décembre 2005 Dernière intervention
- 18 nov. 2005 à 08:46
Bonjour a tous


J’ai un
petit probleme


J’ai deux données (une
en hexa et une en decimal) que je voudrais comparer mais je n’y arrive
pas


Explication :


J’utilise microsoft fax
serveur (FAXCOMEXLib.FaxServer) qui me renvoi un job id sous la forme 144614278267376223 lors de l’envoi
d’un fax



J’utilise ensuite cette procedure

Public Sub objSender_OnOutgoingJobChanged(ByVal pFaxServer As FAXCOMEXLib.FaxServer, ByVal bstrJobId As String, ByVal pJobStatus As FAXCOMEXLib.FaxJobStatus)

qui surveille les événement du serveur fax et se declanche lorsque l’état d’un fax
change

Le parametre bstrJobId est sous la
forme « 201C5EB7D93925F » en hexa donc.


Si vous ouvrez la
calculette windows et que vous convertissez 144614278267376223 en hexa vous
obtenez bien 201C5EB7D93925F


Le problème c’est que
VB6 n’est pas capable de faire ce genre d’operation 144614278267376223 etant un
entier codé sur 64 bits(il me semble)….


Auriez vous une idée
pour comparer ces deux valeurs (sauf passer sous .Net bien sur
^^)?

J'ai créé une fonction de conversion Hex->Dec mais au mieux elle me retourne : 1.44614278267376E+17

Public Function convHexToDec(sNum As String) As Long
Dim i As Integer, itemp As Integer

Dim iPuissance As Integer
Dim val As Integer
iPuissance = 0
i = Len(sNum)
For itemp = i To 1 Step -1
Select Case Mid(sNum, itemp, 1)
Case "A"
val = 10
Case "B"
val = 11
Case "C"
val = 12
Case "D"
val = 13
Case "E"
val = 14
Case "F"
val = 15
Case Else
val = Mid(sNum, itemp, 1)
End Select
convHexToDec = convHexToDec + (val * (16 ^ iPuissance))
iPuissance = iPuissance + 1
Next
End Function


Merci


++
Afficher la suite 

5 réponses

Meilleure réponse
Gobillot 3140 Messages postés vendredi 14 mai 2004Date d'inscription 31 mars 2015 Dernière intervention - 17 nov. 2005 à 18:35
3
Merci
désolé je vois que le décimal pour faire ça.

évite d'appeler ta variable val









Private Sub Command1_Click()

Dim str As String



str = "201C5EB7D93925F"

MsgBox convHexToDec(str)



End Sub



Public Function convHexToDec(sNum As String) As Variant

Dim i As Integer, itemp As Integer



Dim iPuissance As Variant

Dim valeur As Integer

iPuissance = CDec(1)

i = Len(sNum)

For itemp = i To 1 Step -1

Select Case Mid(sNum, itemp, 1)

Case "A"

valeur = 10

Case "B"

valeur = 11

Case "C"

valeur = 12

Case "D"

valeur = 13

Case "E"

valeur = 14

Case "F"

valeur = 15

Case Else

valeur = Mid(sNum, itemp, 1)

End Select

convHexToDec = convHexToDec + (valeur * iPuissance)

iPuissance = iPuissance * 16

Next

End Function


Daniel

Merci Gobillot 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Meilleure réponse
Gobillot 3140 Messages postés vendredi 14 mai 2004Date d'inscription 31 mars 2015 Dernière intervention - 17 nov. 2005 à 18:52
3
Merci
rassures toi ça passe largement:



str = "201C5EB7D93925FFFFFFFFF"

réponse --> 621113595693024425807970303

Daniel

Merci Gobillot 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

cs_rt15 3982 Messages postés mardi 8 mars 2005Date d'inscription 7 novembre 2014 Dernière intervention - 17 nov. 2005 à 18:31
0
Merci
Apparement, l'hexa de bstrJobId, tu le réceptionne via une chaîne

Le job ID, comment le réceptionne tu ?

Sur deux entiers 32 bits ?
cs_mateo1975 5 Messages postés jeudi 13 février 2003Date d'inscription 22 décembre 2005 Dernière intervention - 17 nov. 2005 à 18:42
0
Merci
RT15:
Je recois un string
Daniel:
Je vais zieuter dans cette direction merci.
Je teste ca demain au boulot
J'avais meme pas fais gaffe pour la variable qui s'appelle val :s cest pas top en effet
cs_mateo1975 5 Messages postés jeudi 13 février 2003Date d'inscription 22 décembre 2005 Dernière intervention - 18 nov. 2005 à 08:46
0
Merci
C' est genial!!!
Merci beaucoup

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.