将4位整数转换为布尔列表

时间:2015-11-09 11:37:54

标签: python integer boolean bit

我有一个整数,我知道它在0到15之间,即可以用4位表示。我想将该数组的位表示形式作为布尔数组,即

0: [False, False, False, False],
1: [True, False, False, False],
2: [False, True, False, False],
# [...]
15: [True, True, True, True]

我怎样才能最好地实现这一目标?

5 个答案:

答案 0 :(得分:10)

通过格式化为二进制文件:

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]),因为字符串格式化的方式是我们读取它的方式 - 最重要的是第一位,而问题是最低位的第一顺序。

答案 1 :(得分: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

答案 2 :(得分:0)

试试:

$('#processorder').click(function() {
      checked = $("input[type=checkbox]:checked").length;

      if(!checked) {
        alert("Please select an Order(s)..!!");
        return false;
      }

    });

});

<div style="text-align: center;margin-bottom: 10px;"><input type="submit" id="processorder" name="processorder" value="Process Order" class="submit-green"/></div>

答案 3 :(得分:0)

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]

答案 4 :(得分:-2)

x = 7
strBin = str(bin(x))
lsBoolVal = [i == '1' for i in strBin[2:].zfill(4)]