Voici comment convertir du binaire en décimal de façon assez facile :
>>> 0b001
1
>>> 0b010
2
>>> 0b011
3
Remarque :
Comme vous pouvez le voir, Python précéde un nombre exprimé en binaire par les codes 0b
.
La notation mathématique habituelle donnerait ainsi (01101111)2
= (111)10
.
En Python, on obtient alors plutôt 0b01101111
= 111
.
Même principe avec la conversion nombre hexadécimal en nombre décimal :
>>> 0xF1
241
>>> 0xF2
242
>>> 0xF3
243
Remarque :
Comme vous pouvez le voir, Python précéde un nombre exprimé en hexadécimal par les codes 0x
.
La notation mathématique habituelle donnerait ainsi (F4)16
= (244)10
.
En Python, on obtient alors plutôt 0xF4
= 244
.
Il existe encore d'autres façons de convertir en base 10. L'une d'entre elles consiste à utiliser la fonction native int. Cette fonction va tenter de lire le contenu que vous lui fournissez en tant que nombre exprimé en base 10.
Deux exemples en fournissant directement des nombres binaires ou hexadécimaux :
>>> int(0b0101)
5
>>> int(0b11111111)
255
>>> int(0xF1)
241
>>> int(0xFF)
255
Pour l'instant, on ne voit pas trop l'intérêt. En réalité, on peut fournir un second argument : la base dans laquelle on est censé décoder le premier argument qui peut alors être un string :
>>> int('0101',2)
5
>>> int('0b0101',2)
5
>>> int('0xF1',16)
241
>>> int('FF',16)
255
Pour convertir en binaire, il suffit d'utiliser la fonction native bin.
>>> bin(10)
'0b1010'
>>> bin(11)
'0b1011'
Remarque :
La réponse correspond bien au code binaire précédé du préfixe 0b
.
Par contre, la réponse n'est pas réellement un nombre mais un string comme l'indique la présence des guillemets simples.
Si vous voulez supprimer les deux premiers caractères, voici le truc :
>>> a = bin(10)
>>> a
'0b1010'
>>> a = a[2::]
>>> a
'1010'
Le code [2::]
veut dire de ne sélectionner qu'à partir de l'index 2. On ne prendra donc pas les caractères placés aux index 0 et 1.
'0b1010'
devient donc '1010'
.
Si on veut afficher les codes binaires des nombres compris entre 0 et 255 en décimal :
for nombre in range(256) :
print( bin(nombre)[2::] )
On obtient alors cela par exemple :
0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 10000 ... 11111100 11111101 11111110 11111111
Pour finir cette partie, on peut aussi convertir de l'hexadécimal en binaire de façon simple :
>>> bin(0xFF)
'0b11111111'
>>> bin(int('0xFF',16))
'0b11111111'
>>> bin(int('FF',16))
'0b11111111'
>>> bin(0xFF)[2::]
'11111111'
Pour convertir en hexadécimal, il suffit d'utiliser la fonction native hex.
>>> hex(10)
'0xa'
>>> hex(11)
'0xb'
Remarque :
La réponse correspond bien au code hexadécimal précédé du préfixe 0x
.
Par contre, la réponse n'est pas réellement un nombre mais un string comme l'indique la présence des guillemets simples.
Si vous voulez supprimer les deux premiers caractères, voici le truc :
>>> a = hex(20)
>>> a
'0x14'
>>> a = a[2::]
>>> a
'14'
Le code [2::]
veut dire de ne sélectionner qu'à partir de l'index 2. On ne prendra donc pas les caractères placés aux index 0 et 1.
'0x14'
devient donc '14'
.
Pour afficher les codes hexadécimaux des nombres compris entre 0 et 255 en décimal :
for nombre in range(256) :
print( hex(nombre)[2::] )
On obtient :
0 1 2 3 4 5 6 7 8 9 a b c d e f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f 80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 92 93 94 95 96 97 98 99 9a 9b 9c 9d 9e 9f a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 aa ab ac ad ae af b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 ba bb bc bd be bf c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 da db dc dd de df e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd fe ff
Pour finir cette partie, on peut aussi convertir du binaire en hexadécimal de façon simple :
>>> hex(0b1111)
'0xf'
>>> hex(int('0b1111',2))
'0xf'
>>> hex(int('1111',2))
'0xf'
>>> hex(0b1111)[2::]
'f'