2009-05-17 19 views
9

Estoy leyendo números enteros de 16 bits de un hardware sobre el puerto serie.Recepción de enteros de 16 bits en Python

Usando Python, ¿cómo puedo obtener el LSB y el MSB correctos, y hacer que Python entienda que es un entero de 16 bits con el que estoy trabajando, y no solo dos bytes de datos?

Respuesta

21

Trate de usar el módulo 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

o "H" significa "orden de bytes de red" en caso de que no desea recordar que es big endian. –

Cuestiones relacionadas