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

Algorithmes et structures de données Discussion :

Conversion base 16 vers base 2


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2019
    Messages : 2
    Par défaut Conversion base 16 vers base 2
    Bonjour tout le monde !

    Je suis actuellement bloqué par un petit problème de programmation.
    Je dois convertir un nombre en hexa vers le binaire.
    Pour ce faire, j'ai imaginé une sorte de fonction, mais je bute sur le fait qu'une partie de l'hexa repose sur des lettres.
    Comment faire dans ce cas ?

    J'aurais besoin d'aide svppp

    Merci

    Arthur

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 6
    Par défaut
    Ce qui est pratique quand tu convertis d'une base B vers une autre b tel que B est une puissance de b c'est que un caractère d'un nombre écrit dans B correspond toujours au même nombre de caractères dans la base b.
    Dans ton cas, un symbole hexadécimal correspond à 4 bits (0xF = 0b1111, 0xA = 0b1010)
    Il ne te reste plus qu'à trouver toutes les correspondances héxa->binaire et écrire au fur à à mesure que tu lis le nombre hexadécimal la correspondance en binaire.

  3. #3
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 216
    Par défaut
    Première question : Est-ce que tu sais convertir 'à la main' un nombre de base 16 vers la base 2. Si la réponse est non, alors retourner à la première question, et répeter l'opération tant que la réponse est non.

  4. #4
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 288
    Par défaut
    Bonjour

    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ var=ABCDEF
    $ echo "obase=2;ibase=16;$var;" | bc                                                                                                                                                                                                                             
    101010111100110111101111

  5. #5
    Invité de passage
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2019
    Messages : 1
    Par défaut
    Citation Envoyé par 2412arthur Voir le message
    Merci, mais j'ai juste oublié de préciser que je voulais ce code en python
    Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def conv2to16(a):
        return hex(int(a,2))
     
    > conv2to16("1101111010101101")
    > '0xdead
    Si ton entrée est une chaîne de caractères avec des 0 et des 1 ( l écriture en base 2) , tu le convertis en représentation interne binaire avec la fonction int ,, et le paramètre 2 pour spécifier que c est une chaîne de caractères en base 2
    Puis tu utilises la fonction hex pour convertir la représentation binaire en chaîne de caractères en base 16

    Pour faire l inverse tu utilises le paramètre 16 pour la fonction , et tu utilises la fonction bin qui à partir d une représentation binaire écrit une chaîne de caractère en base 2
    Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def conv16to2(a):
            return bin(int(a,16))
     
    > conv16to2("dead")
    > ''0b1101111010101101''
     
    # meme chose avec un nombre de 128 bits
    > conv16to2("0x26F8BC62048F3097F35241BEA984B476")
    > "0b100110111110001011110001100010000001001000111100110000100101111111001101010010010000011011111010101001100001001011010001110110"

    Il n y a pas besoin d itérer . Python gère tout seul si c est un grand entier de plus de 32 bits , et je doute que pour les fonctions hex et bin , comme ce sont des "buit-in" , éviter la conversion en int et convertir directement d une chaîne de caractères base 16 en chaîne de caractères base 2 sera beaucoup plus rapide

  6. #6
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2019
    Messages : 2
    Par défaut
    Citation Envoyé par tbc92 Voir le message
    Première question : Est-ce que tu sais convertir 'à la main' un nombre de base 16 vers la base 2. Si la réponse est non, alors retourner à la première question, et répeter l'opération tant que la réponse est non.
    Oui, ça je sais faire

    Citation Envoyé par Flodelarab Voir le message
    Bonjour

    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ var=ABCDEF
    $ echo "obase=2;ibase=16;$var;" | bc                                                                                                                                                                                                                             
    101010111100110111101111
    Merci, mais j'ai juste oublié de préciser que je voulais ce code en python

Discussions similaires

  1. Conversion base 10 vers base 16 (et inversement)
    Par debprog01 dans le forum Débuter
    Réponses: 10
    Dernier message: 07/01/2017, 13h58
  2. Conversion base SQLite vers PostgreSQL
    Par bm dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/10/2016, 15h23
  3. [VBS] Fonction de conversion de nombres vers la base 10
    Par l_autodidacte dans le forum Vos Contributions VBScript
    Réponses: 2
    Dernier message: 18/02/2014, 19h43
  4. conversion base 16 vers base 10
    Par sarah rhm dans le forum Assembleur
    Réponses: 1
    Dernier message: 23/11/2012, 22h47
  5. conversion base de données sql server 7 vers Oracle 9
    Par hottnikks_79 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 25/03/2008, 13h48

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