Convertir un nombre en binaire sur un quartet

Résolu/Fermé
computerone Messages postés 5 Date d'inscription vendredi 3 janvier 2020 Statut Membre Dernière intervention 3 janvier 2020 - Modifié le 3 janv. 2020 à 20:59
computerone Messages postés 5 Date d'inscription vendredi 3 janvier 2020 Statut Membre Dernière intervention 3 janvier 2020 - 3 janv. 2020 à 22:36
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)
1
computerone Messages postés 5 Date d'inscription vendredi 3 janvier 2020 Statut Membre Dernière intervention 3 janvier 2020 1
3 janv. 2020 à 22:12
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 vendredi 3 janvier 2020 Statut Membre Dernière intervention 3 janvier 2020
3 janv. 2020 à 22:32
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 vendredi 3 janvier 2020 Statut Membre Dernière intervention 3 janvier 2020 1 > trifou
3 janv. 2020 à 22:36
merci beaucoup ;)
1