Nombre binaire sur 1 octet python

Résolu/Fermé
Kyle - Modifié le 4 janv. 2019 à 21:46
 Kyle - 4 janv. 2019 à 19:28
Bonjour,

Je suis débutant en python et je bloque sur quelque chose qui paraît stupide ,

Mon exercice consiste à convertir une adresse IP en nombre binaire puis à la comparer avec le nombre binaire du masque de sous-réseau ,

Voici ma fonction :

 def convbin (d):
    resultat = ''
    nombre = int(d)
    resultat = ''
    while nombre!=0:
        quotient=nombre//2
        reste=nombre%2
        resultat += str(reste)
        nombre=quotient

    res = ''
    for i in range(len(resultat)-1, -1, -1):
        res += resultat[i]
    return res


Néanmoins , j'aimerais que mon nombre binaire soit toujours à 8 chiffres ( sur un octet) , par exemple , l'écriture binaire de 10 est 1010 , j'aimerais qu'elle soit 00001010 , et ceci quelque soit la longueur du nombre binaire différente de 8 .

Merci beaucoup.


Configuration: Windows / Chrome 71.0.3578.98
A voir également:

1 réponse

Jithel Messages postés 843 Date d'inscription mercredi 20 juin 2018 Statut Membre Dernière intervention 31 août 2021 171
4 janv. 2019 à 15:21
for i in range(7, -1, -1): # 8 - 1 = 7
   if(i > len(resultat) - 1):
      res += "0"
   else:
      res += resultat[i] 


Essaye avec ça
1
Salut , Merci beaucoup du temps que vous m'accordez ,


Nombre1 = input(str("test"))




def convbin (d):
    resultat = ''
    nombre = int(d)
    resultat = ''
    while nombre!=0:
        quotient=nombre//2
        reste=nombre%2
        resultat += str(reste)
        nombre=quotient

    res = ''
    for i in range(len(resultat)-1, -1, -1):
        res += resultat[i]
    return res
    for i in range(7, -1, -1):
        if(i > len(resultat) - 1):
            res += "0"
        else:
            res += resultat[i]


print(convbin(Nombre1))



J'ai inséré votre bout de code ( peut-être mal , je ne sais pas ) mais toujours le même problème , 1010 en sortie quand je le fais tourner
0
Jithel Messages postés 843 Date d'inscription mercredi 20 juin 2018 Statut Membre Dernière intervention 31 août 2021 171
4 janv. 2019 à 18:26
Oui, tu l'a mal inséré. Il faut le remplacer par l'ancien code :
for i in range(len(resultat)-1, -1, -1):
        res += resultat[i]
0
Merci beaucoup , tu me sauves la vie , ça marche parfaitement ! Très bonne soirée à toi ! :)
0