Convertir un nombre en binaire sur un quartet

Résolu
computerone Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -  
computerone Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

1 réponse

trifou
 
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)
1
computerone Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   1
 
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.
0
trifou > computerone Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
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)))
0
computerone Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   1 > trifou
 
merci beaucoup ;)
1