Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CHANGEMENT DE BASE (BASE DÉCIMAL VERS EXADECIMAL)


Information sur la source

Catégorie :Math & Algorithmes Classé sous : python, base, decimal, octal, binaire Niveau : Débutant Date de création : 31/10/2004 Date de mise à jour : 29/11/2005 21:20:15 Vu : 6 753

Note :
Aucune note

Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note

Description

Ce code permet de changer de base pour un nombre.
Il a été écrit pour passer de la base exadecimale a la base decimale, mais en changeant la variable digit, vous pouvez configurer le programme pour qu'il passe d'une base décimale a une base octale, binaire ou une base 60 (si vous voulez vous amuser a trouver 1 digit pour chacun des 60, sa vous regarde :p ). Vous l'aurez compris c'est entierement parametrable..

Je sais que c'est un sujet bateau, mais bon, quand on a rien a faire hein..
 

Source

  • # -*- coding: cp1252 -*-
  • #Traduit un exa en decimal et visse-versa.
  • #Les digits exa-decimaux (vous pouvez les changer pour faire un traducteur decimal-octal, binaire ou autre...Le reste du programme s'adapte tout seul.)
  • digits = ["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"]
  • #Ca retranscrit une table (ex: [14,12,8]) en nombre exa.(ex: 8ce).
  • #Attention! le tableau doit etre inverse!!
  • def table2exa(table,size):
  • c = 1
  • nombre = ""
  • while c <= size:
  • valeur = table[-c]
  • c = c + 1
  • nombre = nombre + digits[valeur]
  • return nombre
  • #Je ne connait pas la methode 'normale' pour les exposants, alors j'ai créé la mienne.
  • def exposant(a,b):
  • c = 0
  • r = 1
  • while c < b:
  • r = r * a
  • c = c + 1
  • return r
  • #Cette classe definit un nombre decimal.
  • class nDecimal:
  • nombre = 0
  • def __init__(self,valeur):
  • self.nombre = valeur
  • def translate(self):
  • n = self.nombre
  • m = 0
  • nexa = []
  • s = 0
  • si = digits.index(digits[-1],-1)+1
  • while n != 0:
  • s = s + 1
  • m = n % si
  • n = n / si
  • nexa = nexa + [m]
  • nombre = table2exa(nexa,s)
  • return nombre
  • #Cette classe définit un nombre exadecimal.
  • class nExadecimal:
  • nombre = ""
  • def __init__(self,valeur):
  • self.nombre = valeur
  • def translate(self):
  • nombre = self.nombre
  • size = nombre.rfind(nombre[-1])+1
  • ns = ""
  • s = 0
  • while s < size:
  • s = s + 1
  • ns = ns + nombre[-s]
  • nombre = digits.index(ns[0])
  • si = digits.index(digits[-1],-1)+1
  • s = 1
  • while s < size:
  • nombre = nombre + digits.index(ns[s]) * exposant(si,s)
  • s = s + 1
  • return nombre
# -*- coding: cp1252 -*-
#Traduit un exa en decimal et visse-versa.

#Les digits exa-decimaux (vous pouvez les changer pour faire un traducteur decimal-octal, binaire ou autre...Le reste du programme s'adapte tout seul.)
digits = ["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"]

#Ca retranscrit une table (ex: [14,12,8]) en nombre exa.(ex: 8ce).
#Attention! le tableau doit etre inverse!!
def table2exa(table,size):
    c = 1
    nombre = ""
    while c <= size:
        valeur = table[-c]
        c = c + 1
        nombre = nombre + digits[valeur]
    return nombre

#Je ne connait pas la methode 'normale' pour les exposants, alors j'ai créé la mienne.
def exposant(a,b):
	c = 0
	r = 1
	while c < b:
		r = r * a
		c = c + 1
	return r

#Cette classe definit un nombre decimal.
class nDecimal:
    nombre = 0
    def __init__(self,valeur):
        self.nombre = valeur
    def translate(self):
        n = self.nombre
        m = 0
        nexa = []
        s = 0
        si = digits.index(digits[-1],-1)+1
        while n != 0:
            s = s + 1
            m = n % si
            n = n / si
            nexa = nexa + [m]
        nombre = table2exa(nexa,s)
        return nombre
#Cette classe définit un nombre exadecimal.
class nExadecimal:
    nombre = ""
    def __init__(self,valeur):
        self.nombre = valeur
    def translate(self):
        nombre = self.nombre
        size = nombre.rfind(nombre[-1])+1
        ns = ""
        s = 0
        while s < size:
            s = s + 1
            ns = ns + nombre[-s]
        nombre = digits.index(ns[0])
        si = digits.index(digits[-1],-1)+1
        s = 1
        while s < size:
            nombre = nombre + digits.index(ns[s]) * exposant(si,s)
            s = s + 1
        return nombre

Conclusion

Il n'y a pas beaucoup de commentaires mais c'est un code facile, et si vous avez des quetsions je peu y repondre.
 

Historique

29 novembre 2005 21:20:15 :
Mots clés ajoutés.

Commentaires et avis

signaler à un administrateur
Commentaire de econs le 31/10/2004 22:05:54 administrateur CS

Pour les exposants, c'est comme ceci :

exposant(a,b) = a ** b

signaler à un administrateur
Commentaire de Marvin le 31/10/2004 22:12:59

Merci bien pour cette information.
J'avais cherché  (des trucs comme a^b..) mais sa ne marchait pas, alors j'ai definit cette methode et sa marchait bien.

signaler à un administrateur
Commentaire de maxpeg0705 le 02/11/2004 18:48:15

juste un ptit truc exadecimal ca secrit hexadecimal

signaler à un administrateur
Commentaire de Marvin le 03/11/2004 20:41:00

Oui je m'en suis apercus un  peu trop tard..

signaler à un administrateur
Commentaire de Marvin le 03/11/2004 20:41:04

Oui je m'en suis apercus un  peu trop tard..

signaler à un administrateur
Commentaire de Marvin le 03/11/2004 20:41:06

Oui je m'en suis apercus un  peu trop tard..

signaler à un administrateur
Commentaire de Marvin le 03/11/2004 20:41:41

Erf desolé, beug de IE

signaler à un administrateur
Commentaire de lepecheur le 13/05/2005 17:48:53

tant qu'on est aux raccourcis :

s = s + l

peut s'écrire

s += l

signaler à un administrateur
Commentaire de lepecheur le 13/05/2005 17:49:17

tant qu'on est aux raccourcis :

s = s + l

peut s'écrire

s += l

signaler à un administrateur
Commentaire de lepecheur le 13/05/2005 17:50:37

Erf desolé, bug de codes-sources ^^

signaler à un administrateur
Commentaire de veracruz le 04/08/2005 08:13:28

Petites modifications sur ton code A+

signaler à un administrateur
Commentaire de pgassie le 10/05/2007 23:31:37

Je propose cela :
def hexa_car(r): # r de 0 a 15
if r<10 : return str(r) # de 0 a 9
else :return chr(r+55)  # de A a F

def hexa(nb):
hex=""
while nb>=16 : # on divise par seize,
hex+=hexa_car(nb%16)# dernier chiffre a droite,
nb= nb/16 # on passe aux chiffres suivants
return hexa_car(nb%16)+hex

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

instruction de base sous Python de transfert de fichiers [ par dgpgl ] Comment transferer des fichiers par xxx.jpeg depuis un PC windows sur une&nbsp; machine linux... a l'adresse xxx.ccc.com qui est ouverte via un port s Ouverture d'un fichier windows (avec Tkinter) [ par Uims ] Bonjour, Je travaille sous python et Tkinter et j'aurai voulu savoir comment dire a python de demarrer (comme on clique sur un fichier) une applicati [python] py2exe et plotting (gnuplot) [ par xeben ] Salut a tous, J'ai cr&#233;&#233; une petite application en python/pyQt dans laquelle je visualise des donnees avec gnuplot. J'inclus donc dans le se Compilation des fichiers sources pyhton en executables sous windows [ par 3edbill69 ] J'ai fait une recherche et j'ai trouv&#233; qu'il y avait des compilateurs pour les fichiers .py qui donnent des executables ind&#233;pendants de pyth python et compilateurs [ par magicbisousnours ] Bonjour j'aimerai savoir quel programme utiliser pour développer du Python je dispose de Visual C++ 6.0 et Visual studio .Net 2003et comme je débute e Aide en creation de script sur Python [ par parisien ] Bonjour, Comment faire un whois en python. Existe t-il un module whois dont on pourrait faire un import. Help PLEASE Recherche devlopeur python sous blender . [ par nocide ] Bonjours, je m'appelle Guillaume, Je suis le fondateur de la team "fairtoon" . Cette team &#224; pour but de R&#233;aliser des simulateurs de f&#233;t visual python [ par xilure ] je voudrai savoir ou je peux le telecharger et comment s'en sert on (comme Tkinter?) voila merci d'avance ps j'en profite pour renouveler ma questio Python peut être interpreté par un navigateur comme dans html [ par rabikisa ] Est-ce possible d'interpreter python à partir d'un navigateur si on utilise une base de données gadfly?(comme les pages html quoi...)si possible comme Installer Scons Python [ par neophenix83 ] Bonjour,Je souhaite installer Scons pour compiler certains programmes, mais j'ai un petit probl&#232;me.J'ai tout d'abord install&#233; python2.4.2 &#


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,406 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.