Comment puis-je convertir une chaîne de valeurs hexadécimales à une liste d'entiers?
J'ai une longue chaîne de valeurs hexadécimales que tout ressemble à ceci:
'\x00\x00\x00\x01\x00\x00\x00\xff\xff\x00\x00'
De la chaîne est de 1024 images d'une forme d'onde. Je veux convertir ces valeurs hexadécimales à une liste de valeurs de type entier, tels que:
[0, 0, 0, 1, 0, 0, 0, 255, 255, 0, 0]
Comment puis-je convertir ces valeurs en hexadécimal à ints?
Vous avez une chaîne d'octets, python, lors de l'impression, convertit une chaîne de caractères littérale de la représentation de vous. Le
\x00
les évasions sont utilisés pour n'importe quel octet qui n'est pas une version imprimable des caractères ASCII.OriginalL'auteur joshreesjones | 2013-02-19
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
ord()
en combinaison avecmap()
:struct.unpack()
disponible et capable d'interpréter les octets que d'autres types de trop.Mais d'une manière intelligente de le faire pour ce très limité problème ... Ça m'a fait sourire.
Cette solution est 6 fois plus lent que
struct.unpack
, btw..struct
prend 0,3 secondes pour un million d'itérations, alors quemap(ord, s)
besoins de 1,8 secondes.Relativement, bien sûr.. mais combien de temps CPU serait-il par rapport à tout ce qui se passe dans le script? De nouveau, le code et le optimiser.
Mais sachant que d'avance ce sera plus rapide gagne, vous la moitié de la bataille. Un Débordement de pile vous donne la possibilité d'être informés sur les options que vous avez pour une opération donnée; en ajoutant des informations de synchronisation pour les réponses ici vous pouvez faire un choix plus éclairé sans avoir à aller et optimiser vous-même si le besoin d'optimisation surviennent.
OriginalL'auteur cdhowie
utilisation
struct.déballez
:Cela vous donne un
tuple
au lieu d'unlist
, mais j'ai confiance, vous pouvez convertir si vous en avez besoin.OriginalL'auteur mgilson
Certains timings;
struct
est encore plus rapide, mais vous pouvez manipuler unarray
et d'obtenir une représentation en octets de retour avec moins d'étapes.quelle sottise! Juste remarqué, mis à jour!
Timings avec une résolution de 1024 octets chaîne de caractères: pastie.org/6226168; array gagne alors.
louange à partir de le maître! Guido ne peut pas être mauvais optimisation anectode
OriginalL'auteur Fredrik Pihl