Nombre binaire sur 1 octet python

Résolu
Kyle -  
 Kyle -
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

1 réponse

  1. Jithel Messages postés 1049 Statut Membre 171
     
    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
    1. Kyle
       
      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
    2. Jithel Messages postés 1049 Statut Membre 171
       
      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
    3. Kyle
       
      Merci beaucoup , tu me sauves la vie , ça marche parfaitement ! Très bonne soirée à toi ! :)
      0