2017-08-07 95 views
0

請使用十六進制表示數據來實現位掩碼的最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

回答

1

雖然bytes不支持按位操作,但整數的操作。因此,我們可以在字節序列重複(它產生整數),應用&操作,並將其轉換回字節序列:一如既往,*始終*使用NumPy的:處理數組的

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