将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

output-click here

[True, False, False, False, False]
另一答案
x = 7
strBin = str(bin(x))
lsBoolVal = [i == '1' for i in strBin[2:].zfill(4)]

以上是关于将4位整数转换为布尔列表的主要内容,如果未能解决你的问题,请参考以下文章

将每行从整数列表转换为整数数组?

JS:将布尔列表转换为紧凑字符串?

Python中的布尔值列表到整数

Python学习之旅---数据类型(数字字符窜列表元组字典布尔值)

将 List<boolean> 转换为字符串

将 Mathematica 值列表转换为布尔列表