2009-05-17 42 views
9

Tôi đang đọc các số nguyên 16 bit từ một phần cứng trên cổng nối tiếp.Nhận các số nguyên 16 bit trong Python

Sử dụng Python, làm thế nào tôi có thể nhận được quyền LSB và MSB, và làm cho Python hiểu rằng đó là một số nguyên có dấu 16 bit mà tôi đang sử dụng và không chỉ là hai byte dữ liệu?

Trả lời

21

Hãy thử sử dụng các mô-đun 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

Hoặc "h!" Có nghĩa là "endianness mạng" trong trường hợp bạn không muốn nhớ đó là về cuối lớn. –

Các vấn đề liên quan