Infoforall

PYTHON : Convertir en binaire, décimal et hexadécimal

Convertir vers ou à partir du binaire

Pour afficher les valeurs des octets en binaire, il faut utiliser print(bin(octet)).

Pour informer qu'il s'agit de nombre binaire, on a la notation 0b en préfixe de la valeur des bits. Attention avec cet affichage : les premiers bits à 0 ne sont pas affichés.

Ainsi le nombre 5 (en base 10) serait affiché 0b101 et pas 0b00000101.

>>> bin(5)

'0b101'

>>> type(bin(5))

<class 'str'>

Attention, on obtient bien un string ! Pourquoi ? Simplement car on pourra ainsi traiter les bits très simplement en fonction de leur position, à l'aide d'une boucle. Il faudra faire attention, le bit de poids faible est à droite, pas à gauche...

Un petit truc que vous comprendrez plus tard pour inverser les caractères d'une chaîne de caractères :

>>> bin(23)

'0b10111'

>>> bin(23)[::-1]

'11101b0'

Si votre nombre est initialement en hexadécimal, il suffit de le préfixer avec 0x.

>>> bin(0xa7)

'0b10100111'

>>> type(bin(0xa7))

<class 'str'>

Si vous voulez traduire du binaire en base 10, c'est possible aussi. Il suffit de le préfixer par 0b :

>>> 0b101

5

Comme votre octet binaire risque d'être un string si vous avez suivi, on peut aussi utiliser ceci :

>>> int('101',2)

5

>>> int('0b101',2)

5

Le 2 indique que '101' ou '0b101' est à décoder comme étant un nombre exprimé en base 2.

Convertir en ou à partir de l'hexadécimal

Pour l'hexadécimal, c'est pareil mais la fonction pour obtenir un string correspondant au nombre exprimé en base 16 est hex(nombre).

En version condensée :

>>> hex(240)

'0xf0'

>>> hex(245)

'0xf5'

>>> type(hex(245))

>>> hex(245)[::-1]

'5fx0'

>>> hex(0b111011101)

'0x1dd'

>>> int('0x1dd',16)

477