begin process at 2012 02 05 01:14:50
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Math & Algorithmes

 > CHANGEMENT DE BASE (BASE DÉCIMAL VERS EXADECIMAL)

CHANGEMENT DE BASE (BASE DÉCIMAL VERS EXADECIMAL)


 Information sur la source

Note :
Aucune note
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 :10 519

Auteur : Marvin

Ecrire un message privé
Site perso
Commentaire sur cette source (13)
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.

 Sources du même auteur

L'AUTRE FASSON DE VOIR LES THREADS

 Sources de la même categorie

Source avec Zip BASE64 ENCRYPT/DECRYPT PYTHON BY MAXOU56800 par Maxou56800
Source avec Zip Source avec une capture TRIANGULATION par mecrosoft
Source avec Zip Source avec une capture COURBE DE BEZIER par mecrosoft
Source avec Zip Source avec une capture CALCUL D'AIRE D'UN TRIANGLE [INTERFACE GRAPHIQUE] par SeventhSon
Source avec Zip Source avec une capture SUITE DE FIBONACCI [INTERFACE GRAPHIQUE] par SeventhSon

 Sources en rapport avec celle ci

Source avec Zip TPYCODE, TRADUCTEUR DE CODE par jonathan33350
Source avec une capture JEU DU SERPENT (SNAKE) par zarash
Source avec Zip Source avec une capture TRIANGULATION par mecrosoft
CHANGEMENT DE CASSE par linkid
Source avec Zip Source avec une capture CONVERTISSEUR DECIMAL-BINAIRE-HEXADECIMAL (INTERFACE TKINTER... par drvolodimtank

Commentaires et avis

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

Pour les exposants, c'est comme ceci :

exposant(a,b) = a ** b

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.

Commentaire de maxpeg0705 le 02/11/2004 18:48:15

juste un ptit truc exadecimal ca secrit hexadecimal

Commentaire de Marvin le 03/11/2004 20:41:00

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

Commentaire de Marvin le 03/11/2004 20:41:04

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

Commentaire de Marvin le 03/11/2004 20:41:06

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

Commentaire de Marvin le 03/11/2004 20:41:41

Erf desolé, beug de IE

Commentaire de lepecheur le 13/05/2005 17:48:53

tant qu'on est aux raccourcis :

s = s + l

peut s'écrire

s += l

Commentaire de lepecheur le 13/05/2005 17:49:17

tant qu'on est aux raccourcis :

s = s + l

peut s'écrire

s += l

Commentaire de lepecheur le 13/05/2005 17:50:37

Erf desolé, bug de codes-sources ^^

Commentaire de veracruz le 04/08/2005 08:13:28

Petites modifications sur ton code A+

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

Commentaire de dlaffargue le 15/02/2010 16:49:41

Bonjour,
Le code précédent bien appréciable, mais il y'a une tite erreur,
au lieu de "hex+=hexa_car(nb%16)# dernier chiffre a droite",
il faut "hex=hexa_car(nb%16)+hex",
sinon au delà de 256, les derniers chiffres sont intervertis
(pour 257 on a 110 en hexa au lieu de 101).

Bon code, avec mes bénédictions :-) !

 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 Tkinter et les bases de données [ par dahrprog ] Bonjour tout le monde :) , je suis débutant en Python et Tkinter , je peux fabriquer des interfaces sur Tkinter , et je j'aimerais bien manipuler des Python et PostgreSQL [ par dahrprog ] Bonjour tout le monde , j'ai arrivé a créer une base de données PostgreSQL à l'aide de PgAdmin , j'ai une interface avec Tkinter , et je veux inserer compilateur en pseudo python [ par emmybela ] bonjour, s'il vous plait je suis dans la mesure de réaliser un compilateur en pseudo python càd une partie de la grammaire de python , je sollicite si debutant en python [ par newss ] bonjour, je debute dans le python j'ai un livre sur python 2, je voudrais savoir comment bien commencer? Faire les exos ou allez directement dans ce Python et Mysql [ par dahrprog ] Bonjour tout le monde , je suis debutant en Python et Mysql , j'ai pu finalement créer une base de données sur phpmyadmin , et je peux la connecter de moteur de recherce via python [ par newss ] bonjour, je recherche pour faire une recherche sur le web via python de mot et pouvoir telecharger apres pourriez vous m'aider merci tutoriaux python [ par slachz ] voilà un tuto FR tres remplie en python (il existe en bouquin mais est telechargeable gratuitement) :http://www.ulg.ac.be/cifen/inforef/swi/python.htm installation python [ par champagnef ] Bonjour,je suis nouveau sur python. J'apprends (en amateur intéressé) avec le cours de G. Swinnen et autres tuto.Je suis sur Mac Os X.3.5 et je pense Projet Python: Lecteur de flux RSS. [ par Marvin ] Amis codeurs, bien le bonjour (ou plutot bonsoir car il est 00:33 ( GTM + 1h ) ) ,J'ai en tête depuis déja quelques jours, de créer un lecteur de flux


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,638 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales