Conversioni di base

Da base 29 a base 10

def c_b_10(x,b):
    y=0
    for c in x:
        p=int(c)
        y=y*b+p
    return y

numero =     input("Numero         = ")
base1  = int(input("Da base (2..9) = "))
risp   = c_b_10(numero,base1)
print(risp)

Da base 236 a base 10

Ogni cifra (‘0′,…,’9′,’A’,…,’Z’) deve essere convertita nel suo peso in base 10 (0,…,35)

def peso(car):
    if(car.isdigit()):
        return int(car)
    else:
        return 10+ord(car)-ord("A")
 
def c_b_10(x,b):
    x=x.upper()
    y=0
    for c in x:
        p=peso(c)
        y=y*b+p
    return y

numero =     input("Numero          = ")
base1  = int(input("Da base (2..36) = "))
risp   = c_b_10(numero,base1)
print(risp)

Da base 10 a base 29

def c_10_b(x,b):
    if(x == 0):
        return "0"
    else:
        y=""
        while(x > 0):
            q=x//b
            r=x%b
            y=str(r)+y
            x=q
        return y

numero = int(input("Numero        = "))
base2  = int(input("A base (2..9) = "))
risp   = c_10_b(numero,base2)
print(risp)

Da base 10 a base 236

Il peso della cifra (0…35) diventa un carattere (‘0’…’9′,’A’…’Z’)

def cifra(c):
    if(c < 10): 
        return str(c) 
    else: 
        return chr(ord("A")+c-10)

def c_10_b(x,b): 
    if(x == 0): 
        return "0"
    else: 
        y="" 
        while(x > 0):
            q=x//b
            r=x%b
            y=cifra(r)+y
            x=q
        return y

numero = int(input("Numero         = "))
base2  = int(input("A base (2..36) = "))
risp   = c_10_b(numero,base2)
print(risp)

Da base 236 a base 236

Si passa per la base 10

def peso(car):
    if(car.isdigit()):
        return int(car)
    else:
        return 10+ord(car)-ord("A")

def cifra(c):
   if(c < 10): 
       return str(c) 
   else: 
       return chr(ord("A")+c-10) 

def c_10_b(x,b): 
    if(x == 0): 
        return "0" 
    else: 
        y="" 
        while(x > 0):
            q=x//b
            r=x%b
            y=cifra(r)+y
            x=q
        return y

def c_b_10(x,b):
    x=x.upper()
    y=0
    for c in x:
        p=peso(c)
        y=y*b+p
    return y

numero =     input("Numero  = ")
base1  = int(input("Da base = "))
base2  = int(input("A base  = "))
risp   = c_b_10(numero,base1); 
print(risp)
risp   = c_10_b(risp  ,base2); 
print(risp)