Menu

Nombre binaire sur 1 octet python [Résolu]

-
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
Afficher la suite 

Votre réponse

1 réponse

Meilleure réponse
Messages postés
668
Date d'inscription
mercredi 20 juin 2018
Dernière intervention
23 janvier 2019
44
1
Merci
for i in range(7, -1, -1): # 8 - 1 = 7
   if(i > len(resultat) - 1):
      res += "0"
   else:
      res += resultat[i] 


Essaye avec ça

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 57945 internautes nous ont dit merci ce mois-ci

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
Jithel
Messages postés
668
Date d'inscription
mercredi 20 juin 2018
Dernière intervention
23 janvier 2019
44 -
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]
Merci beaucoup , tu me sauves la vie , ça marche parfaitement ! Très bonne soirée à toi ! :)
Commenter la réponse de Jithel