我通过 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'
),它提供了比较的能力,但我不能将它们放入字节数组中发送,因为 bytearr.append (BYTE)
合理地返回一个错误。所以我不能将它们重新定义为字符串。那么比较从 sock.recvfrom
获得的 bytes
和以我的方式声明的值的方法是什么?
最佳答案
如果您的问题是转换,您可以通过这种方式将变量 BYTES 转换为字节数组:
>>> BYTE = '0xAD'
>>> ba = bytearray([int(BYTE, 16)])
然后使用 ==
比较字节数组。
关于python - 在 Python 中比较字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34157943/