【发布时间】:2016-03-29 09:21:27
【问题描述】:
我正在编写 python 代码,它一次从串行读取一个字节并将其存储到列表中。
接下来我需要结合两个字节来获得有效载荷长度。为了实现这个目标,我需要将长度的 MSB(最高有效字节)和 LSB(最低有效字节)转换为整数,然后移动 MSB。
这是我的列表:['H', '4', 'K', 'M', '0', '\x10', '\xff', '\x10', '\x00', ' \x02', '\xff', '\xff'].
MSB 是 '\x02' 和 LSB 是 '\x00'
我将 MSB 和 LSB 存储在两个变量中,并尝试通过 int() 将其从字符串转换为 int:
payloadLenMSB_h = int(packetHeader[offsetPayloadLenMSB])
payloadLenLSB_h = int(packetHeader[offsetPayloadLenLSB])
但我收到此错误:
**ValueError: invalid literal for int() with base 10: ''**
我可以通过哪种方式将长度的MSB和LSB转换为int?
接下来我需要将 MSB 向右移动 8 位,并将其与 LSB 结合。
有什么建议吗?
这是我从串口读取数据的代码:
print 'Available data on COM Port: ' + str(availableSerialByte)
if availableSerialByte > 0:
readByte = serialCOM.read(1)
print 'Read COM byte:' + str(readByte)
谢谢!!!
【问题讨论】:
标签: python serial-port bit-shift pyserial