Convertir une lettre en chiffre

Fermé
l-vvv Messages postés 3 Date d'inscription lundi 6 janvier 2014 Statut Membre Dernière intervention 13 février 2017 - 13 févr. 2017 à 19:47
_Ritchi_ Messages postés 21210 Date d'inscription samedi 17 mars 2007 Statut Contributeur Dernière intervention 20 avril 2024 - 4 mars 2017 à 17:30
Bonsoir ,
Je dois réaliser un programme qui convertit de l'Héxa en décimal et pour cela je dois affecter a chaque lettre du chiffre Héxa une valeur numérique mais je ne sais pas comment faire pouvez vous m'aider ?
PS: je n'ai pas le droit d'utiliser la fonction int("B1C", 16)
A voir également:

3 réponses

hcp7kuz Messages postés 243 Date d'inscription mardi 18 août 2015 Statut Membre Dernière intervention 23 mars 2019 23
Modifié par hcp7kuz le 3/03/2017 à 19:32
Salut,

la fonction replace() ?
ton_nombre_sous_form_de_chaine = ton_nombre_sous_form_de_chaine.replace("a", "11")
1
_Ritchi_ Messages postés 21210 Date d'inscription samedi 17 mars 2007 Statut Contributeur Dernière intervention 20 avril 2024 6 058
Modifié par _Ritchi_ le 4/03/2017 à 11:02
Bonjour,

La conversion d'un nombre hexa sous forme de chaine de caractère vers un nombre décimal se fait ainsi:
exemple avec '91FC' (en hexa): il faut lire la chaine à l'envers, de droite à gauche. En faisant cela, on obtient ceci:
'C' * 16^0 + 'F' * 16^1 + '1' * 16^2 + '9' * 16^3

Rappel: le caractère ^signifie 'puissance'.
Maintenant, il faut juste traduire C par 12 et F par 15 pour que le calcul te donne un entier décimal.
Pour faire cette traduction, quoi de mieux qu'un ... dictionnaire où tu traduis chaque valeur hexa en décimal:
dico_hex2dec = {'0' : 0, '1' : 1, '2' : 2, '3' : 3, '4' : 4, '5' : 5, '6' : 6, '7' : 7, '8' : 8, '9' : 9, 'A' : 10, 'B' : 11, 'C' : 12, 'D' : 13, 'E' : 14, 'F' : 15}


Maintenant, il te faut lire ta chaine hexa à l'envers, en commençant par le dernier caractère. Et pour cela, quoi de mieux qu'une boucle "for".

Je te laisse chercher encore et si cela t'intéresse toujours, je te donnerai ma boucle for qui tient sur une seule ligne.
A+

Ritchi
0
_Ritchi_ Messages postés 21210 Date d'inscription samedi 17 mars 2007 Statut Contributeur Dernière intervention 20 avril 2024 6 058
4 mars 2017 à 17:30
Salut

Allez voici ma proposition en Python 3.6:
# -*- coding: utf-8 -*-

def Hex2Dec(nbhex):
    return sum([16 ** i * int(dico_hex2dec[nbhex[::-1][i]]) for i in range(len(nbhex))])


dico_hex2dec = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, 'A': 10, 'B': 11, 'C': 12, 'D': 13, 'E': 14, 'F': 15, 'x': 0}

# exemple:
hexa = '0xDEAD'

decimal = Hex2Dec(hexa)
print('la valeur', hexa, 'vaut', decimal, 'en décimal')




Ritchi
0