Java:将bool数组转换为单个int

asb*_*ans 0 java int boolean bit-manipulation

我有一个布尔数组(长度= 2),我想要将其转换为一个整数,以便整数内的各个位代表布尔数组的值:

[false, false] = 0
[false, true] = 1
[true, false] = 2
[true, true] = 3
Run Code Online (Sandbox Code Playgroud)

Aln*_*tak 14

这将有效:

int n = (a[0] ? 2 : 0) + (a[1] ? 1 : 0);
Run Code Online (Sandbox Code Playgroud)

如果您想要更通用的解决方案:

int n = 0, l = a.length;
for (int i = 0; i < l; ++i) {
    n = (n << 1) + (a[i] ? 1 : 0);
}
Run Code Online (Sandbox Code Playgroud)

  • 哈哈 - 你的更优雅.+1 (2认同)

gus*_*afc 9

任意长度数组的通用方法(尽管只有最后32个元素有所不同,因为整数是32位):

int booleansToInt(boolean[] arr){
    int n = 0;
    for (boolean b : arr)
        n = (n << 1) | (b ? 1 : 0);
    return n;
}
Run Code Online (Sandbox Code Playgroud)