我有一个布尔数组(长度 = 2),我想将其连接并转换为整数,以便整数内的各个位表示布尔数组中的值:
[false, false] = 0
[false, true] = 1
[true, false] = 2
[true, true] = 3
我有一个布尔数组(长度 = 2),我想将其连接并转换为整数,以便整数内的各个位表示布尔数组中的值:
[false, false] = 0
[false, true] = 1
[true, false] = 2
[true, true] = 3
这将起作用:
int n = (a[0] ? 2 : 0) + (a[1] ? 1 : 0);
如果您想要更通用的解决方案:
int n = 0, l = a.length;
for (int i = 0; i < l; ++i) {
n = (n << 1) + (a[i] ? 1 : 0);
}
任意长度数组的通用方式(尽管只有最后 32 个元素有所不同,因为 int 是 32 位):
int booleansToInt(boolean[] arr){
int n = 0;
for (boolean b : arr)
n = (n << 1) | (b ? 1 : 0);
return n;
}
int i = (array[0] ? 2 : 0) + (array[1] ? 1 : 0);
长度的一般解决方案!= 2:
public static void main(String[] args) {
boolean[] array = {true, true, false};
int number = 0;
int j = array.length - 1;
for (int i = 0; i < array.length; i++) {
if (array[i])
number += 1 << j--;
}
}
int number = 0;
for(int i = array.length - 1; i >= 0; i--)
{
if(array[i])
{
int exponent = (array.length - 1 - i)
number += Math.pow( 2, exponent );
}
}