布尔数组可以被认为是二进制数,例如
boolean[] four = {true, false, false}; //100
我想将这样的数组转换为十进制等效数,例如
int decimal = convertBooleanArrayToDecimal(four);
//decimal == 4
我该怎么办?
干杯,
皮特
答案 0 :(得分:5)
尝试这样的事情。
long result = 0;
for (boolean bit : four) {
result = result * 2 + (bit ? 1 : 0);
}
答案 1 :(得分:3)
另一种解决方案:
long result = 0;
for (boolean bit: boolArray)
{
result <<= 1;
if (bit) result += 1;
}
这在数学上等同于Nikita的解决方案,但我发现位移版本更清晰。