Python 中的十六进制位掩码

Hex Bitmasking in Python

请问使用数据的十六进制表示来实现位屏蔽的最pythonic/最简单的方法是什么?

比如我有

test = b'\x02\x00\x00\x01'
ref = b'\x02\x00\x00\x00'

我想有效地按位计算:

test & ref

似乎Python无法比较字节类型的对象,所以我想我需要先转换为其他一些表示形式,但我不知道哪种/最佳方法。

binascii 和 struct 包看起来合理,但转换为十进制数。这是正确的吗?

虽然 bytes 不支持按位 & 运算,但整数支持。所以我们可以迭代字节序列(产生整数),应用 & 操作,并将它们转换回字节序列:

>>> bytes(map(operator.and_, b'\x02\x00\x00\x01', b'\x02\x00\x00\x00'))
b'\x02\x00\x00\x00'