ascii编码的字节型数据长得很像hex编码的字节型数据,导致我搞晕了很久。
首先,在python中以下几种方式输出结果都是相同的
print(b'/xff'[0]) # 16进制字节型数据选取的第一个字节,输出255
pring(b'U'[0]) # 255 # ascii码字节型数据,输出255
print(0x55) # 255 # 16进制数,输出255
如果要想在ascii编码的数据中检测帧头,有以下两种方式
1.通过16进制数判断
byte_string = b'U\xaaM\xf3r\n\xa5'
frame_header = 0x55 # 帧头的十六进制表示
if byte_string[0] == frame_header:
print("帧头是 0x55") # 正确
else:
print("帧头不是 0x55")
2.通过字节型数据判断
byte_string[0:1]取出第一个字节,并以字节
byte_string = b'U\xaaM\xf3r\n\xa5'
second_byte = b'\x55'
if byte_string[0:1] == second_byte: # byte_string[0:1] = b'u'
print("帧头是 0x55")
else:
print("帧头不是 0x55")
用字节数据判断时,应注意取byte_string[0:1]而不是byte_string[0]