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'
请问使用数据的十六进制表示来实现位屏蔽的最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'