将4位整数转换为布尔列表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将4位整数转换为布尔列表相关的知识,希望对你有一定的参考价值。
我有一个整数,我知道它在0到15之间,即可以用4位表示。我想将该数组的位表示作为布尔数组,即
0: [False, False, False, False],
1: [True, False, False, False],
2: [False, True, False, False],
# [...]
15: [True, True, True, True]
我怎样才能做到最好?
答案
通过格式化为二进制:
def int_to_bool_list(num):
bin_string = format(num, '04b')
return [x == '1' for x in bin_string[::-1]]
或按位和:
def int_to_bool_list(num):
return [bool(num & (1<<n)) for n in range(4)]
第一个函数要求bin_string
内容被反转(使用[::-1]
),因为字符串格式化以我们读取它的方式格式化数字 - 最重要的位是第一个,而问题是要求最低位第一顺序的位。
另一答案
使用列表理解:
my_int = 3
[b == '1' for b in bin(my_int)[2:].rjust(4)[::-1]] # Convert, pad and reverse
输出:
[True, True, False, False]
1 2 4 8 = 3
另一答案
试试看:
Bitmasks = []
Bitmasks.append(int("0001", 2))
Bitmasks.append(int("0010", 2))
Bitmasks.append(int("0100", 2))
Bitmasks.append(int("1000", 2))
myNumber = 12
Bools = []
for bm in Bitmasks:
Bools.append(myNumber|bm==myNumber)
另一答案
R = 16
list = []
print bin(R)[2:]
for i in bin(R)[2:]:
if (i=="1"):
list.append(True)
else:
list.append(False)
print list
[True, False, False, False, False]
另一答案
x = 7
strBin = str(bin(x))
lsBoolVal = [i == '1' for i in strBin[2:].zfill(4)]
以上是关于将4位整数转换为布尔列表的主要内容,如果未能解决你的问题,请参考以下文章