👤

Est-ce que quelqu’un peut m’aider a faire un Algorithme binaire en hexadécimal et inversement

Merci d’avance


Répondre :

Bonsoir,

def bin_hex(n):

   n = str(n) #On convertit n en chaîne de caractères.

   binaire = True #On suppose que n est un nombre binaire.

   hexa = '0123456789ABCDEF'

   n_final = ''

   for c in n: #On parcourt n.

       if c not in ['0', '1']: #Si c n'est pas binaire.

           binaire = False #Alors n est en hexadécimal, on fera donc la conversion vers le binaire.

           break

   if binaire: #Conversion en hexadécimale.

       while len(n)%4 != 0: #Il faut faire des paquets de 4 bits pour la conversion.

           n = '0' + n #On ajoute un 0 au début de n, ça n'a aucun impact sur le nombre.

       for i in range(0, len(n), 4):

           n_inter = n[i:i+4] #On travaille sur des groupes de 4.

           k = 0

           for j in range(4): #On convertir en décimal.

               k += int(n_inter[-j-1]) * 2**j

           n_final += hexa[k] #On récupére l'héxadécimal correspondant.

   else: #Conversion en binaire.

       for c in n: #On parcout n.

           n_inter2 = []

           n_inter = hexa.index(c) #On transforme c en décimal.

           while n_inter != 0: #On va effectuer la méthode des divisions successives par 2.

               n_inter2.append(n_inter%2)

               n_inter //= 2

           n_inter2.reverse() #Lecture des restes à l'envers.

           n_inter3 = ''

           for i in n_inter2:

               n_inter3 += str(i)

           while len(n_inter3)%4 != 0:

               n_inter3 = '0' + n_inter3

           n_final += n_inter3

   return n_final

Bonne soirée.