如何将二进制数字附加到python中的最终变量
a = self.allcheckboxes[0].isChecked() # 1
b = self.allcheckboxes[1].isChecked() # 0
c = self.allcheckboxes[2].isChecked() # 1
d = self.allcheckboxes[3].isChecked() # 0
final_value = 010+a+b+c+d
# iam expecting something like 0101010 in binary
答案 0 :(得分:2)
我假设您只想要一个二进制查找字符串,而不是设置相关位的整数,如果是这样,您可以使用以下复选框10到14:
final_value = ''.join('1' if checkbox.isChecked() else '0' for checkbox in self.allcheckboxes[10:15])
如果需要,可以将其转换为整数并打印为十六进制,如下所示:
integer_value = int(final_value, 2)
print '{:x}'.format(integer_value)
答案 1 :(得分:0)
您可以在operator.itemgetter
函数中使用operator.attrgetter
和map
来完成一行中的所有代码,并使用str.join()
加入结果:
from operator import itemgetter,attrgetter
''.join(map(attrgetter('isChecked'),itemgetter(0,1,2,3)(self.allcheckboxes)))
另请注意,python中没有二进制类型,当你得到串联字符串时,根据你的目标和你要拨打的函数,你可以将这个字符串作为二进制数。
例如,如果要将其转换为整数,可以通过将2作为 base 传递来使用int
函数:
>>> int('0101',2)
5