Convertir un nombre en binaire sur un quartet [Résolu]

Signaler
Messages postés
5
Date d'inscription
vendredi 3 janvier 2020
Statut
Membre
Dernière intervention
3 janvier 2020
-
computerone
Messages postés
5
Date d'inscription
vendredi 3 janvier 2020
Statut
Membre
Dernière intervention
3 janvier 2020
-
bonjour
en isn j'ai un exercice dans le quelle je dois prendre en nombre le séparé dans un liste et le convertir en binaire sur un quartet par exemple pour le nombre 3289471 je dois obtenir:
0011 0010 1000 1001 0100 0111 0001
j'ai donc essayer de crée un programme mais il ne fonctionne pas est je ne sais pas comment faire
listenb= [int(c) for c in str(liste1)]# sépare le nombre en plusieur partie
liste2=[]
liste3=[]
for i in listenb :

    while i!= 0:
     b=i%2
     i=i//2
     liste2.append(b)
liste2.reverse()
liste3
print(liste2)


merci d'avance pour vos reponces

1 réponse

Tu n'es pas très loin.

code = str(32894710)
bar = []
for n in code[:-1]:
    base = [0] * 4
    n = int(n)
    i = 3
    while n:
        n, r = divmod(n, 2)
        base[i] = r
        i -= 1
    bar.extend(base)
bar.append(int(code[-1]))
print(bar)


Un façon encore plus courte, mais beaucoup moins lisible.

code = str(32894710)
bar = []
for n in code[:-1]:
    bar.extend(map(int, bin(int(n))[2:].zfill(4)))
bar.append(int(code[-1]))
print(bar)
computerone
Messages postés
5
Date d'inscription
vendredi 3 janvier 2020
Statut
Membre
Dernière intervention
3 janvier 2020

merci de ta réponse mais il y a un problème avec ces programme c'est que le nombre sera sous la forme d'une liste et décomposer comme se ci
[3,2,8,9,4,7,1]
et donc cela ne marche plus avec le programme et je ne vois pas comment le faire marché avec une liste merci d'avance pour ta réponse.
> computerone
Messages postés
5
Date d'inscription
vendredi 3 janvier 2020
Statut
Membre
Dernière intervention
3 janvier 2020

Une liste ou chaine, ça revient au même, et on même pas besoin de convertir en entier du coup.

code = [3,2,8,9,4,7,1]
bar = []
for n in code:
    base = [0] * 4
    i = 3
    while n:
        n, r = divmod(n, 2)
        base[i] = r
        i -= 1
    bar.extend(base)
print(bar)
# Représentation
print(*(''.join(map(str, bar[i:i+4])) for i in range(0, len(bar), 4)))
computerone
Messages postés
5
Date d'inscription
vendredi 3 janvier 2020
Statut
Membre
Dernière intervention
3 janvier 2020
> trifou
merci beaucoup ;)