Comment puis-je convertir une partie d'un python tuple (tableau d'octets) en un entier
Je suis en train de parler à un périphérique à l'aide de python. J'ai reçu un n-uplet d'octets qui contient les informations de stockage. Comment puis-je convertir les données dans les valeurs correctes:
réponse = (0, 0, 117, 143, 6)
Les 4 premières valeurs sont en 32 bits int de me dire combien d'octets ont été utilisés et la dernière valeur est le pourcentage utilisé.
Je peux accéder à la tuple comme réponse[0], mais ne peut pas voir comment je peux obtenir les 4 premières valeurs dans l'int qu'il me faut.
Vous devez vous connecter pour publier un commentaire.
Voir Convertir des Octets pour les Nombres à virgule Flottante en Python
Vous voudrez probablement utiliser la structure de module, par exemple
En supposant un unsigned int. Il peut y avoir une meilleure façon de faire la conversion pour décompresser, une compréhension de liste avec une jointure était juste la première chose que j'ai trouvé.
MODIFIER: Voir aussi ΤΖΩΤΖΙΟΥ commentaire de cette réponse concernant l'endianness ainsi.
EDIT #2: Si vous n'avez pas l'esprit à l'aide de la matrice de module ainsi, voici une autre méthode qui élimine la nécessité d'une compréhension de liste. Grâce à @JimB pour préciser que déballer peut fonctionner sur des tableaux en tant que bien.
Serait,
répondre à vos besoins?
aide
OK, Vous n'indiquez pas le endinanness ou si l'entier est signé ou et (peut-être) est plus rapide avec la struct module:
Vous pouvez également faire usage de la matrice de module
Cela ressemble à un travail pour réduire les!
Ce que vous avez besoin est à, décalage de bit d'un octet à la fois, puis ajouter (plus) de l'octet suivant dans la séquence.
a
àa[:4]
et le code fonctionne comme il faut par les OP (au moins si big endian) est envisagée. Pas besoin de downvote directement.Comment sur l'utilisation de la carte fonction:
Aussi, je ne sais pas si c'est que vous êtes à la recherche pour: