Python >> Tutoriel Python >  >> Python

Fonction Python bin()

bin(integer) intégré de Python la fonction prend un argument entier et renvoie une chaîne binaire avec le préfixe "0b" . Si vous appelez le bin(x) sur un x non entier , il doit définir le __index__() méthode qui retourne un entier associé à x . Sinon, il lancera un TypeError: object cannot be interpreted as an integer .

Argumentation integer Une valeur entière ou un objet implémentant le __index__() méthode.
Valeur de retour string Renvoie une chaîne de nombres binaires, préfixée par "0b" .
Input : bin(1)
Output : '0b1'

Input : bin(2)
Output : '0b10'

Input : bin(4)
Output : '0b100'

Input : bin(8) 
Output : '0b1000'

Input : bin(42)
Output : '0b101010'

Mais avant de continuer, je suis ravi de vous présenter mon nouveau livre Python Python One-Liners (Lien Amazon).

Si vous aimez les one-liners, vous allez adorer le livre. Il vous apprendra tout ce qu'il y a à savoir sur une seule ligne de code Python. Mais c'est aussi une introduction à l'informatique , science des données, apprentissage automatique et algorithmes. L'univers en une seule ligne de Python !

Le livre est sorti en 2020 avec l'éditeur de livres de programmation de classe mondiale NoStarch Press (San Francisco).

Lien :https://nostarch.com/pythononeliners

Exemples bin()

Le code suivant vous montre comment utiliser le bin() fonction sur différents arguments d'entrée.

# Integer to Binary
print(bin(8))
# 0b1000

# Integer to Binary
print(bin(16))
# 0b10000

# Integer to Binary
print(bin(129))
# 0b10000001

# Custom class to Binary
class Lst:
    def __index__(self):
        return 129

x = Lst()
print(bin(x))
# 0b10000001

# List to Binary? --> Error!
print(bin([1, 2, 3]))
# TypeError: 'list' object cannot be interpreted as an integer

Vous pouvez observer plusieurs propriétés du bin() fonction :

  • Il est toujours précédé de '0b' pour binaire .
  • Il renvoie une représentation sous forme de chaîne de l'entier converti en binaire.
  • Si vous réussissez un object d'une classe implémentant le __index__ méthode retournant un entier, bin(object) renvoie le binaire associé à la valeur renvoyée.
  • Si vous passez un objet d'une classe n'implémentant pas le __index__ méthode, il lancera un TypeError: object cannot be interpreted as an integer

Python bin() sans préfixe "0b"

Pour ignorer le préfixe, utilisez le découpage en tranches et commencez par l'index 2 sur la chaîne binaire. Par exemple, pour ignorer le préfixe '0b' sur le résultat de x=bin(2)='0b10' , utilisez l'opération de découpage x[2:] qui donne juste le nombre binaire '10' sans le préfixe '0b' .

Voici quelques exemples :

>>> bin(2)
'0b10'
>>> bin(2)[2:]
'10'
>>> x = bin(42)
>>> x
'0b101010'
>>> x[2:]
'101010'

Les méthodes inférieures sont basées sur le format() de Python fonction :

>>> format(14, '#b'), format(14, 'b')
('0b1110', '1110')
>>> f'{14:#b}', f'{14:b}'
('0b1110', '1110')

Remplissage Python bin()

Problème :Comment convertir un entier en binaire en utilisant la fonction bin() mais sans supprimer les zéros non significatifs. Par exemple, le résultat doit toujours avoir une longueur de 8 bits :

bin(2) -> 0b10

# What you want:
bin(2) -> 0b00000010

Comment y parvenir ?

Solution :Utilisez le format() pour définir le format exact dont vous avez besoin.

>>> format(14, '#010b')
'0b00001110'

Le format() La fonction vous permet d'utiliser le langage FSML (Format Specification Mini Language). Passons de gauche à droite sur les symboles de l'argument FSML.

  • Utilisez le hashtag # pour inclure le 0b préfixe.
  • Utilisez le 0 caractère de format pour définir le caractère de remplissage.
  • Utilisez le 10 size formate la sortie pour tenir dans une largeur de 10 caractères. Deux de ces 10 caractères sont pour le '0b' préfixe, de sorte que 8 bits restent dans la chaîne binaire.
  • Utilisez le b caractère de format pour formater le résultat en binaire.

Résumé

bin(integer) intégré de Python la fonction prend un argument entier et renvoie une chaîne binaire avec le préfixe "0b" .

Si vous appelez le bin(x) sur un x non entier , il doit définir le __index__() méthode qui retourne un entier associé à x .

Sinon, il lancera un TypeError: object cannot be interpreted as an integer .

Un exemple est l'appel bin(3) qui se traduit par la chaîne binaire '0b11' car le nombre binaire de décimal 3 est binaire 11 .


Prochain article