CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Python] Hexadecimal

Dark-SA-X
Dark-SA-X
Niveau 10
05 novembre 2014 à 15:37:05

Bonjour tout le monde,

Alors voilà, je cherche un moyen de convertir un nombre hexadécimal en décimal, autre que le "int(hexadecimal, 16)". J'ai essayer plusieurs choses sans succès :x

guyver2
guyver2
Niveau 10
05 novembre 2014 à 15:57:05

si tu veux le faire a la main, le plus simple c;est de revenir a la definition d'un nombre hexadecimal et de faire le calcul a la main en bouclant sur tous les chiffres qui composent ton nombre de base.
comme ceci :
0x1a8 = 1*16^2 + 10*16 + 8

Dark-SA-X
Dark-SA-X
Niveau 10
05 novembre 2014 à 16:03:02

Le problème c'est que en inverse j'ai du mal à comprendre, autant passer de decimal à hexa je n'ai pas de soucis, mais l'inverse un peu plus dur, du coup j'ai du mal à faire un programme permettant l'inverse (sans utiliser le int). A moins de peut-être faire rentrer 1 par 1 ce qui compose le nombre hexa, je pourrais peut-être y arriver, mais tout d'un coup ca va être dur

Dark-SA-X
Dark-SA-X
Niveau 10
05 novembre 2014 à 17:33:39

Oui voilà, c'est plus un problème de chaîne de caractères, je pense pouvoir arriver en faisant entrer 1 à 1, mais pas que cela gère toute la chaîne en fait. Et au début, j'avais du mal avec la façon de passer de hexadécimal à décimal à la main, mais j'ai compris c'est tout con ^^

Dark-SA-X
Dark-SA-X
Niveau 10
05 novembre 2014 à 19:53:54

Okay, merci du conseil, je vais essayer et vous tiens au courant ^^ En tout cas merci ^^

Dark-SA-X
Dark-SA-X
Niveau 10
05 novembre 2014 à 20:30:00

Une dernière question, comment faire pour commencer à 16^rangDuChiffre si ça lisait de droite à gauche j'aurais pu faire +1 à chaque fois en commençant de 1, mais là on doit commencer la puissance au plus grand rang (avec ton exemple 16^3 du coup)

Dark-SA-X
Dark-SA-X
Niveau 10
05 novembre 2014 à 20:52:14

Désolé du triple post ^^

J'ai trouver la fonction len() qui permet de compter le nombre de caractère de la chaîne.

Bon mon code marche, merci beaucoup pour votre aide ^^ J'ai réussi à comprendre, parce que je ne veux pas c/c un code sur internet ça n'a aucune utilité

Dark-SA-X
Dark-SA-X
Niveau 10
05 novembre 2014 à 20:53:09

Oui j'ai bien mis "- 1" à chaque boucle pour obtenir le bon rang ^^

Dark-SA-X
Dark-SA-X
Niveau 10
05 novembre 2014 à 20:58:04

En tout cas merci des conseils ^^
C'est tellement plus simple de pouvoir utilise le "int()" mais bon xD Au moins ca m'a permis de comprendre comment passer de hexa à decimal ^^

Pseudo supprimé
Pseudo supprimé 06 novembre 2014 à 00:30:17

T'es pas obligé de faire de droite a gauche. si tu regardes comment on convertit un nombre hexa en binaire, on fait correspondre chaque chiffre a sa valeur binaire sur 4 bits

0x1234 = 0b0001_0010_0011_0100
0x ___1 ___2 ___3 ___4
0b 0001 0010 0011 0100

a partir de la, tu peux faire une boucle avec un shift de 4 bits

par exemple, 0x1234 pareil que

n = 0
n = (n << 4) | 0x1
n = (n << 4) | 0x2
n = (n << 4) | 0x3
n = (n << 4) | 0x4

python: http://ideone.com/zLO9nv
c: http://ideone.com/KwJPXt

pour convertir un caractère, j'utilise une table de correspondance pour éviter un test mais les lettres doivent être en majuscule.

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment