J'ai un caractère et je voudrai avoir sa représentation sous forme de 8 bits.
Est - ce possible? Si oui comment faire?
merci
J'ai un caractère et je voudrai avoir sa représentation sous forme de 8 bits.
Est - ce possible? Si oui comment faire?
merci
Bonjour,
Il y a une fonction dans la faq permettant de convertir un nombre entier en chaîne binaire: http://python.developpez.com/faq/?pa...#Base10ToBase2
Avec cette fonction, le résultat que tu cherches pourrait être obtenu par: bin(ord(C)), C étant le caractère en question.
Tu pourrais même compléter la chaîne binaire à gauche par d'éventuels zéros pour avoir toujours 8 chiffres: bin(ord(C)).zfill(8)
Tyrtamos
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 char = 'M' print ''.join({ 'x':'0000' ,'0':'0000' ,'1':'0001' ,'2':'0010' ,'3':'0011' ,'4':'0100' ,'5':'0101' ,'6':'0110' ,'7':'0111' ,'8':'1000' ,'9':'1001' ,'A':'1010' ,'B':'1011' ,'C':'1100' ,'D':'1101' ,'E':'1110' ,'F':'1111' }[c.upper()] for c in hex(ord(char))[-2:])
Notez que la ruse du 'x':'0000' ou le .zfill(0) ne sont nécessaires que pour les caractères de valeur 0 à 15, non imprimables.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 char = 'M' print ''.join({ '0':'0000' ,'1':'0001' ,'2':'0010' ,'3':'0011' ,'4':'0100' ,'5':'0101' ,'6':'0110' ,'7':'0111' ,'8':'1000' ,'9':'1001' ,'A':'1010' ,'B':'1011' ,'C':'1100' ,'D':'1101' ,'E':'1110' ,'F':'1111' }[c.upper()] for c in hex(ord(char)).split('x')[-1]).zfill(8)
A priori je préférerais la première solution...
n 'est ce pas carrément plus simple sachant que je veux que mes caractères soient codés sur 8 bits?
merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 def chr2bin(c): return ''.join(reversed(['%d' % (ord(c) & 2**x > 0) for x in xrange(8)]))
Et pourquoi ne pas se contenter de la première solution?
merci
Partager