Python中的十六进制掩码

问题描述:

请使用十六进制表示数据来实现位掩码的最pythonic /最简单的方法是什么?Python中的十六进制掩码

例如,我有

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

我想有效地计算按位:

test & ref 

似乎Python不能比拟字节类型的对象,所以我想我需要转换为首先有一些其他表示,但我不是最佳的方式。

binascii和struct包看起来很合理,但转换为十进制数。它是否正确?

+0

原则之一。 – o11c

+0

感谢您的评论 - 你会推荐什么numpy功能? – IanRoberts

+0

Numpy数组直接支持'&',并将其按元素进行应用。 – o11c

虽然bytes不支持按位操作,但整数的操作。因此,我们可以在字节序列重复(它产生整数),应用&操作,并将其转换回字节序列:一如既往,*始终*使用NumPy的:处理数组的

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