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

Messages postés
5
Date d'inscription
jeudi 13 février 2003
Dernière intervention
22 décembre 2005
- - Dernière réponse : cs_mateo1975
Messages postés
5
Date d'inscription
jeudi 13 février 2003
Dernière intervention
22 décembre 2005
- 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
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Dernière intervention
31 mars 2015
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 97 internautes nous ont dit merci ce mois-ci

Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Dernière intervention
31 mars 2015
3
Merci
rassures toi ça passe largement:



str = "201C5EB7D93925FFFFFFFFF"

réponse --> 621113595693024425807970303

Daniel

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 97 internautes nous ont dit merci ce mois-ci

Messages postés
3982
Date d'inscription
mardi 8 mars 2005
Dernière intervention
7 novembre 2014
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 ?
Messages postés
5
Date d'inscription
jeudi 13 février 2003
Dernière intervention
22 décembre 2005
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
Messages postés
5
Date d'inscription
jeudi 13 février 2003
Dernière intervention
22 décembre 2005
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.