﻿#============================================================
# Conversion d'un entier en base 2 vers la base 16
#============================================================

def convb2b16():

    # Titre
    print("****************************************************")
    print("*                                                  *")
    print("* Conversion d'un entier en base 2 vers la base 16 *")
    print("*                                                  *")
    print("****************************************************")
    print()

#   Saisie de l'entier en base 2 à convertir
    nb_2 = str(input("Saisir l'entier en base 2  à convertir : "))
    print("Entier en base 2 à convertir : ",nb_2)

#   Détermination du nombre de chiffres du résultat
    n = len(nb_2)
    nb_quadlets_complets = n//4
    nb_quadlet_reste = n%4
    if nb_quadlet_reste == 0 :
        nb_car = nb_quadlets_complets
    else :
        nb_car = nb_quadlets_complets + 1
#       Complétation par des zéros inutiles à gauche
        for i in range(4-nb_quadlet_reste) :
            nb_2 = '0' + nb_2
            print("i =",i," nb_2 = ",nb_2)

#   Conversion par quadlet
    nb_16 = "("
    for i in range(nb_car) :
        chiffre=str(nb_2[i*4:(i+1)*4])
        print("i =",i," chiffre = ",chiffre)
        if chiffre == "0000" :
            nb_16 = nb_16 + " 0"
        elif chiffre == "0001" :
            nb_16 = nb_16 + " 1"
        elif chiffre == "0010" :
            nb_16 = nb_16 + " 2"
        elif chiffre == "0011" :
            nb_16 = nb_16 + " 3"
        elif chiffre == "0100" :
            nb_16 = nb_16 + " 4"
        elif chiffre == "0101" :
            nb_16 = nb_16 + " 5"
        elif chiffre == "0110" :
            nb_16 = nb_16 + " 6"
        elif chiffre == "0111" :
            nb_16 = nb_16 + " 7"
        elif chiffre == "1000" :
            nb_16 = nb_16 + " 8"
        elif chiffre == "1001" :
            nb_16 = nb_16 + " 9"
        elif chiffre == "1010" :
            nb_16 = nb_16 + " A"
        elif chiffre == "1011" :
            nb_16 = nb_16 + " B"
        elif chiffre == "1100" :
            nb_16 = nb_16 + " C"
        elif chiffre == "1101" :
            nb_16 = nb_16 + " D"
        elif chiffre == "1110" :
            nb_16 = nb_16 + " E"
        elif chiffre == "1111" :
            nb_16 = nb_16 + " F"
    nb_16 = nb_16 + " )"

    print("Résultat en base 16 : ",nb_16)
    print()

    print("Fin programme")
    return 0