2010-03-07 5 views

Répondre

5
[int(x, 16) for x in L] 
+0

Je pense que vous voulez dire 'int (x, 16)' –

3

[0xBB, 0xA7, 0xF6, 0x9E] est le même que [187, 167, 158]. Il n'y a donc pas de forme spéciale 'nombre entier hexadécimal' ou similaire.

Mais vous pouvez convertir vos chaînes hexagonales à ints:

>>> [int(x, 16) for x in ['BB', 'A7', 'F6', '9E']] 
[187, 167, 246, 158] 

Voir aussi Convert hex string to int in Python

+0

J'ai une liste en python avec le contenu suivant P ENVOI DE DONNÉES Q . Q . –

4

Selon le format dans le fichier texte, il peut être plus facile de convertir directement

>>> b=bytearray('BBA7F69E'.decode('hex')) 

ou

>>> b=bytearray('BB A7 F6 9E'.replace(' ','').decode('hex')) 
>>> b 
bytearray(b'\xbb\xa7\xf6\x9e') 
>>> b[0] 
187 
>>> hex(b[0]) 
'0xbb' 
>>> 

un bytearray est facilement converti en une liste

>>> list(b) == [0xBB, 0xA7, 0xF6, 0x9E] 
True 

>>> list(b) 
[187, 167, 246, 158] 

Si vous voulez changer la façon dont la liste est affichée vous devrez faire votre propre classe de liste

>>> class MyList(list): 
... def __repr__(self): 
... return '['+', '.join("0x%X"%x if type(x) is int else repr(x) for x in self)+']' 
... 
>>> MyList(b) 
[0xBB, 0xA7, 0xF6, 0x9E] 
>>> str(MyList(b)) 
'[0xBB, 0xA7, 0xF6, 0x9E]' 
Questions connexes