python - 在 Python 中比较字节

标签 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'),它提供了比较的能力,但我不能将它们放入字节数组中发送,因为 bytearr.append (BYTE) 合理地返回一个错误。所以我不能将它们重新定义为字符串。那么比较从 sock.recvfrom 获得的 bytes 和以我的方式声明的值的方法是什么?

最佳答案

如果您的问题是转换,您可以通过这种方式将变量 BYTES 转换为字节数组:

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

然后使用 == 比较字节数组。

关于python - 在 Python 中比较字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34157943/

相关文章:

python_list 转数组错误

python:如何拥有可以从所有应用程序访问的字典

python - Selenium 无法启动 Chromedriver

python - 独立文件中相互依赖的类(循环导入)

python - Python 中的 bash 变量

python - Django post_syncdb 信号处理程序没有被调用?

python -/bin/sh : 1: python: not found while running docker container

python - 如何使用子类的默认值调用父类init?

python - 使用 MySQLdb 从 Python 中获取 MySQL

python - 如何忽略一组字符直到遇到正则表达式中的指定字符?