2016-09-19 285 views
-1

我想從bitarray中刪除每個16位整數的最低有效2位。他們存儲這樣的:Python bitarray操作

010101**00**10010101101100**00**10101010..... 

(該星號之間的0將被刪除有兩種,其中每16位(忽略第一個))。

我可以簡單地使用常規for循環檢查索引(每16位之後的第7和第8)消除它們。

但是...還有其他更多pythonic這種方式嗎?我正在考慮一些切片符號或可能是理解列表。也許我可以將每個數字除以4,並用14位對每一個數字進行編碼(如果有辦法的話)。

回答

2

您可以用掩碼很容易地清除位。如果要清除位8和7,你可以做這樣的:

a = int('10010101101100',2) 
mask = ~((1 << 7) | (1 << 8)) 
bin(a&mask) 

更多信息有關從here!

掩蔽