我正在尝试测试从串口接收的数据,似乎无法正确使用。我需要检查数据包中收到的第一个字节是否为0xBE:
#ser is instance of pyserial serial object
data=ser.read(5)
print "serial RX: " + binascii.b2a_hex(data)
if data[0] != 0xBE:
print"wrong value"
始终打印:
serial RX: beef000008
wrong value
即使ascii打印的二进制文件显示已收到正确的值。
在这个真正基本的任务中我哪里出错了?
谢谢, 罗宾。
答案 0 :(得分:3)
Changed in version 2.5: Returns an instance of bytes when available (Python 2.6 and newer) and str otherwise.
所以我测试了:
>> bytes(0xbe) == 0xbe
False
但如果将其转换为int:
>> int(bytes(0xbe)) == 0xbe
True
如stackoverflow question所示,[{3}}类型包含在[PEP-3137 bytes]中。它就像是python3的3,但只是bytearray中str
的别名。
所以,基本上,只需在执行python2代码时将pyserial的输出视为str
。