我通过TCP获取数据并尝试将其与已知值(0xAD)进行比较:
b, addr = sock.recvfrom(1)
h = "".join(hex(ord(i)) for i in b)
print h
if h == str(0xad):
print "Work"
data = bytearray()
data.append(observer.OBSERVER_VALIDATION_BYTE)
sock.sendto(data, 0, addr)
我尝试将它们比如上面所示的字符串进行比较,尝试用两种方式将它们比作字节:
b[0] == 0xAD
或
b2 = bytearray()
b2.append(0xAD)
b2[0] == b[0]
虽然print h
给了我0xad
更新
我有一组定义为BYTE = 0xAD
的字节
我需要通过tcp发送它们并比较读取结果。
如果我将它们定义为字符串(BYTE = '0xAD'
),它提供了比较的能力,但我不能将它们放在bytearray中发送,因为
bytearr.append(BYTE)
合理地返回错误。所以我不能将它们重新定义为字符串。那么比较从bytes
获得的sock.recvfrom
和以我的方式声明的值的方法是什么。
答案 0 :(得分:2)
<强>已更新强>
如果你的问题是强制转换,你可以用这种方式将BYTES转换为bytearray:
>>> BYTE = '0xAD'
>>> ba = bytearray([int(BYTE, 16)])
然后使用==