Python比较字节

时间:2015-12-08 14:05:55

标签: python python-2.7

我通过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和以我的方式声明的值的方法是什么。

1 个答案:

答案 0 :(得分:2)

<强>已更新

如果你的问题是强制转换,你可以用这种方式将BYTES转换为bytearray:

>>> BYTE = '0xAD'
>>> ba = bytearray([int(BYTE, 16)])

然后使用==

比较字节数组