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.
Merci d'avoir visité notre site, qui traite de Informatique. Nous espérons que les informations partagées vous ont été utiles. N'hésitez pas à nous contacter si vous avez des questions ou besoin d'assistance. À très bientôt, et pensez à ajouter notre site à vos favoris !