2009-05-17 2 views
9

Je lis des entiers de 16 bits à partir d'un élément matériel sur le port série. En utilisant Python, comment puis-je obtenir le LSB et le MSB, et faire comprendre à Python qu'il s'agit d'un entier signé de 16 bits avec lequel je manipule, et pas seulement deux octets de données?Réception d'entiers 16 bits en Python

Répondre

21

Essayez d'utiliser le module struct:

import struct 
# read 2 bytes from hardware as a string 
s = hardware.readbytes(2) 
# h means signed short 
# < means "little-endian, standard size (16 bit)" 
# > means "big-endian, standard size (16 bit)" 
value = struct.unpack("<h", s) # hardware returns little-endian 
value = struct.unpack(">h", s) # hardware returns big-endian 
+1

Ou « h! » Signifie « boutisme réseau » dans le cas où vous ne voulez pas de se rappeler qu'il est grand endian. –