Comment faire pour convertir des nombres hexadécimales sur entier long

Traductions disponibles Traductions disponibles
Numéro d'article: 161304 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Résumé

Microsoft Visual Basic possède une fonction Hex$() pour convertir un nombre en une chaîne de chiffres hexadécimales. Toutefois, il n'a aucune fonction évidente pour effectuer la conversion inverse. Cet article explique comment utiliser la fonction Val() pour effectuer l'hexadécimal à conversion de type entier long, plus une interruption afin d'éviter.

Plus d'informations

La fonction Val() peut être utilisée pour convertir une chaîne de chiffres décimaux en un nombre. Il peut également être utilisé sur une chaîne de chiffres hexadécimaux, mais vous devrez ajouter les caractères "& H" à la chaîne de chiffres façon à ce que la fonction Val() utilise le nombre correct base dans le processus de conversion.

Par exemple :
  A = Val("1234")    ' performs decimal conversion

  A = Val("7FFF")    ' results in 7 - the F's are ignored

  A = Val("&H7FFF")  ' performs hexadecimal conversion
				

Interruption de l'entier

Si vous affectez les résultats de la conversion en une variable de type entier long, vous allez probablement uniquement que les numéros de la plage de 80 000 000 FFFFFFFF considérés comme des nombres négatifs. Toutefois, sans prendre de précautions particulières, dans la plage 8000 à FFFF sont également considérés comme négatifs.

Ce problème se produit car les nombres avec moins de quatre chiffres sont convertis en entiers de 2 octets signés. Lorsque la valeur intermédiaire entier signé est convertie en un entier long (ou 4 octets), le signe est propagé.

Visual Basic 4.0/Access 95 et versions ultérieures

En ajoutant le suffixe long "&" à la chaîne hexadécimale, même les petites les nombres sont traités en tant que long. La fonction suivante effectue la conversion correctement :
      Function HexToLong(ByVal sHex As String) As Long
        HexToLong = Val("&H" & sHex & "&")
      End Function
				

Visual Basic 3.0/Access 2.0 et versions antérieures

La méthode illustrée ci-dessus ne fonctionnera pas dans Microsoft Visual Basic 3.0 ou version antérieure pour les nombres hexadécimaux supérieures ou égales à 80 000 000. Veuillez consultez la section Références de cet article pour plus d'informations.

Étant donné que ce problème ne se produit pas avec les nombres compris dans la plage de Integer Trap, la fonction de remplacement indiquée ci-dessous ajoute interception des erreurs pour essayer à nouveau sans le suffixe ajouté "&" long :
      Function HexToLong(ByVal sHex As String) As Long
        On Error Resume Next
        HexToLong = Val("&H" & sHex & "&")
        If Err Then
          On Error Goto 0
          HexToLong = Val("&H" & sHex)
        End If
      End Function
				
L'utilisation d'une ou l'autre version de la fonction est la suivante :
      A = HexToLong("8000")
				

Références

Rubrique d'aide de Microsoft Visual Basic : Val, fonction

Rubrique du fichier Lisez-moi de Microsoft Visual Basic 4.0 : contrainte de valeurs hexadécimales

Pour plus d'informations, consultez l'article suivant dans la base de connaissances Microsoft :
95431CORRECTIF : Type erreur incompatibilité si utiliser VAL Function sur Value Big

Propriétés

Numéro d'article: 161304 - Dernière mise à jour: mardi 13 juillet 2004 - Version: 3.2
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual Basic 6.0 Édition initiation
  • Microsoft Visual Basic 6.0 Édition professionnelle
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Visual Basic Control Creation Edition
  • Microsoft Visual Basic 5.0 Édition initiation
  • Microsoft Visual Basic 5.0 Édition professionnelle
  • Microsoft Visual Basic 5.0 Édition Entreprise
  • Microsoft Visual Basic 4.0 Édition Standard
  • Microsoft Visual Basic 4.0 Édition professionnelle
  • Microsoft Visual Basic 4.0 Édition Entreprise
  • Microsoft Visual Basic 2.0 Édition Standard
  • Microsoft Visual Basic 3.0 Édition professionnelle
  • Microsoft Visual Basic 2.0 Édition professionnelle
  • Microsoft Visual Basic 3.0 Édition professionnelle
Mots-clés : 
kbmt kbhowto KB161304 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 161304
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com