IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

conversion décimal / hexadécimal


Sujet :

VB.NET

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10
    Par défaut conversion décimal / hexadécimal
    Bonjour,

    J'ai pour mini projet de faire un convertisseur de base, et je rencontre quelques soucis au niveau de la conversion décimal / hexa, voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
      Dim tabhexa(2000) As Integer
                Dim i As Integer = 0
                Dim fin As Boolean = False
                Dim temp As Integer = 0
     
                While (fin <> True)
     
     
                    If i < 1 Then
                        temp = valeurdep.Text
                    End If
     
                    tabhexa(i) = (temp Mod 16)
                    temp = (temp / 16)
     
                    i = i + 1
     
                    If temp < 16 Then
                        tabhexa(i) = temp Mod 16
                        tabhexa(i + 1) = (temp / 16)
                        fin = True
                    End If
     
     
                End While
    Je recupère donc le contenu de valeurdep.text , le nombre en décimal, puis j'effectue les division par 16 successives et je place chaque reste des divisions dans tabhexa, jusqu'à ce que ce ne soit plus divisible par 16, auquel cas je sors de la boucle.Mais à la sortie, quand je vide tabhexa (en sens inverse bien sur ), j'ai une longue série de 0 avec un nombre à la fin, qui ne correspond en rien à la conversion.Si vous pouviez m'éclairer, ça fait quelques jours que je peine...

    Merci

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim deci As Integer = 123
    Dim hexa As String = deci.ToString("X")
    Ou encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim deci As Integer = 123
    Dim hexa As String = Convert.ToString(deci, 16)

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10
    Par défaut
    Je n'ai pas tout compris tomlev...

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10
    Par défaut
    Ah, la fonction existe déjà en vb apparemment... mais j'aimerais quand même que mon algo fonctionne !

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par lollipop69 Voir le message
    Ah, la fonction existe déjà en vb apparemment... mais j'aimerais quand même que mon algo fonctionne !
    ben à part pour l'intérêt pédagogique, ça n'a pas trop d'utilité de vouloir implémenter toi même un truc qui existe déjà...

    Dans ton algo, il y a un truc qui me chiffonne... jamais tu ne fais une conversion en string. Dans un nombre en hexa, il y a des lettres, donc tu dois forcément convertir les nombres de tabhexa en caractères à un moment ou un autre...

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10
    Par défaut
    Justement, c'est pour les cours donc c'est à but pédagogique !

    Pour ce qui est de la conversion en string, en réalité dans tabhexa il n'y a que des int, ce n'est qu'après, au vidage du tableau que je change les nombre en lettre.

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    En fait le code est presque correct, mais il faut utiliser l'opérateur \ (division entière) et non /, sinon ça fait un arrondi et non une troncature

    Sinon, on peut le simplifier un peu :

    Ces lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                If temp < 16 Then
                    tabhexa(i) = temp Mod 16
    Peuvent être simplifiées en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                If temp < 16 Then
                    tabhexa(i) = temp
    (puisque temp < 16, temp Mod 16 sera toujours égal à temp)

    et celle-ci ne sert à rien (ce sera toujours 0 puisque temp < 16)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                    tabhexa(i + 1) = (temp / 16)
    A la fin, le tableau contient bien les bonnes valeurs, il reste juste à convertir les valeurs supérieures à 9 en lettres...

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10
    Par défaut
    Très bien merci, je vais expérimenter tout ça

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10
    Par défaut
    Ca tourne niquel, maintenant une autre petite question, comment connaitre l'indice utilisé du dernier élément d'un tableau ? Ubound n'a pas l'air de marcher...

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par lollipop69 Voir le message
    Ca tourne niquel, maintenant une autre petite question, comment connaitre l'indice utilisé du dernier élément d'un tableau ? Ubound n'a pas l'air de marcher...
    ben c'est ta variable i...

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10
    Par défaut
    Je suis vraiment une quiche des fois... Merci sujet clos !

  12. #12
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par lollipop69 Voir le message
    Je suis vraiment une quiche des fois... Merci sujet clos !
    utilise le bouton alors

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Conversion Décimal et Hexadécimal
    Par asirier dans le forum SQL
    Réponses: 3
    Dernier message: 21/04/2009, 13h58
  2. conversion décimal - duodécimal
    Par tarang dans le forum Général Python
    Réponses: 8
    Dernier message: 08/12/2006, 23h31
  3. conversion décimale -> héxadécimale
    Par cout dans le forum C
    Réponses: 6
    Dernier message: 03/07/2006, 14h51
  4. conversion bin hexadécimal
    Par zidenne dans le forum Delphi
    Réponses: 2
    Dernier message: 10/06/2006, 00h14
  5. Algo Conversion Décimal -> Binaire
    Par MisterTee dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 23/02/2006, 22h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo