我正在寻找一种有效的方法来确定整数的二进制表示形式中的哪些位。
我有一个库(adafruit_mpr121),该库返回一个沿此行构造的整数:
a = bytearray(2)
b = bytearray(2)
((a[1] << 8) | (a[0])) & 0xFFFF
我可以使用以下格式获取所述整数的字符串二进制表示形式:'{0:0<12b}'.format(bin_int)
,并且我可能可以使用re.finditer()
找到索引,但是我认为有一些更有效的方法,无需遍历所有这些操作。这项完整的操作会占用设备两次扫描之间的睡眠时间,因此一点也不好:
>>> timeit.timeit('[m.start() for m in re.finditer("1", "{0:0<12b}".format(((a[1] << 8) | (a[0])) & 0xFFFF))]', setup='import re; a = bytearray(2); a[0]=16; a[1]=5', number=10000)
0.026143900002352893
有人知道会更快吗?