Masque en hexadécimal

vbpseudo Messages postés 4 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 30 mai 2006 - 30 mai 2006 à 14:23
vbpseudo Messages postés 4 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 30 mai 2006 - 30 mai 2006 à 16:08
Bonjour à Tous,

Je cherche comment réaliser une masque sur un nombre en hexadécimal de 8 octets.
Je voudrais isoler les 2 derniers octets.
Exemple :
nombre = &HAABB131F2CFDE15 -> résultat : &HDE15

J'ai placé le nombre et le masque (&HFFFF) dans des Variant et je fais un Et Logique
(And) mais j'obtiens toujours la valeur -1. J'ai essayé avec d'autes types Double ou long, sans succés .

Merci pour votre aide.

6 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
30 mai 2006 à 14:29
Bonjour

Les long en VB6 sont des entiers sur 4 octets, tu as essayer d'utiliser un Currency ?

Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
30 mai 2006 à 14:53
Salut

"un nombre en hexadécimal de 8 octets"

ça veut rien dire

l'
hexadécimal c'est une façon de représenter les nombres ou les caractères et c'est toujours de l'ascii

ou alors ton nombre est dans une chaîne et tu fait ton masque caractère par caractère.


ou alors c'est un numérique et tu fais ton masque avec un autre numérique

"&HAABB131F2CFDE15" est du numérique, mais n'est pas possible d'être représenté tel quel,

peut être dans du Variant, si ça dépasse pas la capacité mais pas de cette façon


    Dim s1 As Variant

    Dim s2 As Variant

   

    s1 = CDec(12345)

   

    s2 = CDec(67890)

   

    MsgBox s1 And s2


Daniel
0
vbpseudo Messages postés 4 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 30 mai 2006
30 mai 2006 à 15:06
J'ai essayé avec un Currency mais lorsque j'essaye d'écrire le nombre sur 8 octets, j'ai une erreur "dépassement de capacité" ce qui est normal car le maxi accepté par un Currency est 922 337 203 685 477 (&H346DC5D638865).
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
30 mai 2006 à 15:16
Bonjour

Personellement, je pense que si tu as un nombre aussi grand, tu as forcément une manière de le couper.

Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
30 mai 2006 à 15:16
ça passe dans du Variant:

     Dim s1 As Variant


     s1 = CDec(922337203) * 1000000 + 685477

     MsgBox s1







Daniel
0
vbpseudo Messages postés 4 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 30 mai 2006
30 mai 2006 à 16:08
Merci pour votre aide,



Je traite mon nombre comme une chaîne de caractères (suggéré par Daniel) . Je peux ainsi extraire facilement les 4 derniers chiffres puis les convertir.

Patrick
0
Rejoignez-nous