Convertisseur decimal-binaire-hexadecimal (interface tkinter)

Soyez le premier à donner votre avis sur cette source.

Vue 20 849 fois - Téléchargée 915 fois

Description

Ce programme permet comme son nom l'indique de convertir des nombres (entiers) entre ces 3 bases. Toujours utilise pour vérifier les calculs faits "à la main" pour réviser les cours ^^. Petit programme sans prétention fait en 3/4 d'heure.

Source / Exemple :


##############################
# Convertisseur Multi-bases  #
# par Drvolodimtank          #
##############################

#### Importation des modules ####
from Tkinter import *

#################################
#### Fonctions de conversion ####
#################################
listehexa=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"]
listebinaire=["0000","0001","0010","0011","0100","0101","0110","0111","1000","1001","1010","1011","1100","1101","1110","1111"]

def binairedecimal(string):
    x=len(string)-1
    n=0
    res=0
    while x!=-1:
        if string[x]=="1":
            res=res+2**n
        n=n+1
        x=x-1
    return res

def decimalbinaire(string):
    quotient=int(string)
    liste=[]
    res=""
    while quotient!=1:
        liste=liste+[quotient%2]
        quotient=quotient/2
    liste=liste+[1]
    while liste!=[]:
        res=res+str(liste[-1])
        liste=liste[:-1]
    return res

def binairehexa(string):
    liste=[]
    res=""
    while len(string)>4:
        liste=liste+[string[-4:]]
        string=string[:-4]
    liste=liste+[string]
    while len(liste[-1])!=4:
        liste[-1]="0"+liste[-1]
    for x in range(len(liste)):
        i=listebinaire.index(liste[x])
        liste[x]=listehexa[i]
    while liste!=[]:
        res=res+liste[-1]
        liste=liste[:-1]
    return res

def hexabinaire(string):
    res=""
    for x in range(len(string)):
        i=listehexa.index(string[x])
        res=res+listebinaire[i]
    return res

def decimalhexa(string):
    return binairehexa(decimalbinaire(string))

def hexadecimal(string):
    return binairedecimal(hexabinaire(string))

#############################
#### Interface graphique ####
#############################

def convertir():
    saisie=Esaisie.get()
    x,y=basedepart.get(),basearrivee.get()
    couple=(x,y)
    if couple==(1,2):
        res=decimalbinaire(saisie)
    elif couple==(1,3):
        res=decimalhexa(saisie)
    elif couple==(2,1):
        res=binairedecimal(saisie)
    elif couple==(2,3):
        res=binairehexa(saisie)
    elif couple==(3,1):
        res=hexadecimal(saisie)
    elif couple==(3,2):
        res=hexabinaire(saisie)
    else :
        res="Euh..... B00lay ??"
    fen2=Toplevel()
    Label(fen2,text="Resultat").pack()
    Label(fen2,text=res).pack()
    fen2.mainloop()

fen=Tk()
fen.title("Convertisseur Multi-Bases")
Label(fen,text="Saisissez la valeur\na convertir").pack(side=TOP)
Esaisie=Entry(fen)
Esaisie.pack(side=TOP)

Fgauche=Frame(fen)
Fgauche.pack(side=LEFT)
Label(Fgauche,text="Base de depart").pack()
basedepart=IntVar()
Radiobutton(Fgauche,text="Decimal",variable=basedepart,value=1,indicatoron=0,width=15).pack()
Radiobutton(Fgauche,text="Binaire",variable=basedepart,value=2,indicatoron=0,width=15).pack()
Radiobutton(Fgauche,text="Hexadecimal",variable=basedepart,value=3,indicatoron=0,width=15).pack()

Fdroite=Frame(fen)
Fdroite.pack(side=RIGHT)
Label(Fdroite,text="Base d'arrivee").pack()
basearrivee=IntVar()
Radiobutton(Fdroite,text="Decimal",variable=basearrivee,value=1,indicatoron=0,width=15).pack()
Radiobutton(Fdroite,text="Binaire",variable=basearrivee,value=2,indicatoron=0,width=15).pack()
Radiobutton(Fdroite,text="Hexadecimal",variable=basearrivee,value=3,indicatoron=0,width=15).pack()

Bconvertir=Button(fen,text="Convertir",command=convertir)
Bconvertir.pack(side=BOTTOM)

fen.mainloop()

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Commenter la réponse de killer_sam

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.