Python中的十六进制掩码
问题描述:
请使用十六进制表示数据来实现位掩码的最pythonic /最简单的方法是什么?Python中的十六进制掩码
例如,我有
test = b'\x02\x00\x00\x01'
ref = b'\x02\x00\x00\x00'
我想有效地计算按位:
test & ref
似乎Python不能比拟字节类型的对象,所以我想我需要转换为首先有一些其他表示,但我不是最佳的方式。
binascii和struct包看起来很合理,但转换为十进制数。它是否正确?
答
虽然bytes
不支持按位操作,但整数的操作。因此,我们可以在字节序列重复(它产生整数),应用&
操作,并将其转换回字节序列:一如既往,*始终*使用NumPy的:处理数组的
>>> bytes(map(operator.and_, b'\x02\x00\x00\x01', b'\x02\x00\x00\x00'))
b'\x02\x00\x00\x00'
原则之一。 – o11c
感谢您的评论 - 你会推荐什么numpy功能? – IanRoberts
Numpy数组直接支持'&',并将其按元素进行应用。 – o11c