Infoforall

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

Convertir en base 10, le décimal

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

Convertir en base 2, le binaire

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'

Convertir en base 16, l'hexadécimal

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'