Classes pour la conversion de base

Contenu du snippet

Modification d'un exemple depose par Marvin.
Insertion d un nombre en base 10 , translation vers les bases 2 a 16.
Insertion d un nombre en une base X , translation en base 10.

Source / Exemple :


# -*- coding: cp1252 -*-
#modification par jean-yves Aout 2005, repris depuis Marvin
#vers 0.2 !!sauvegarder ce fichier avec le nom "base_dj" pour fonctionner avec l interface !!
#Traduit un exa en decimal et visse-versa.
#
  
#Les digits exa
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: ['8','c','e']). 
#inverse la table pout travailler sur unite en premier

def table2exa(table,b): 
    c = 1
    nbre=str(b)+"' "                 #permet de savoir en quel base est calcule le resultat
    nombre = ""
    while c <= len(table): 
        valeur = table[-c]                  #permet de calculer les unites avant les dizaines,...
        nombre = nombre + (digits[valeur])
        c = c + 1
    nbre= nbre + nombre
        
    return nbre 
  
   
#Cette classe definit un nombre decimal. 
class nDecimal:
    "conversion d un nombre decimal en une autre base definie "
    def __init__(self,valeur='0',b=16): 
        self.nombre = int(valeur)
        self.base=b
    def translate(self):
        n = self.nombre
        b = self.base
        m = 0 
        nexa = [] 
        s = 0 
        si = b                          #defini la base de travail sur la liste digits
        
        while n != 0: 
            m = n % si 
            n = n / si 
            nexa = nexa + [m]
            
        nombre1 = table2exa(nexa,b)
        return nombre1
    
#Cette classe définit un nombre de n importe quel base en base 10.
#
# ex: x=NXdecimal(1010101,2)
#     x.translate()
#     85

class NXdecimal: 
    nombre = "" 
    def __init__(self,valeur,base=16): 
        self.nombre = valeur
        self.base =base
    def translate(self):  #defini dans quel base le nbre est
        nombre =self.nombre
        base=self.base
        size = len(nombre)
        ns = 0
        s = 0
        c=1
        while s < size:
            n1=digits.index(nombre[size-c])*base**s
            
            ns = ns + n1
            s+=1
            c+=1
        
        return ns

Conclusion :


Une interface graphique est dispo

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.