【发布时间】:2010-08-16 17:35:42
【问题描述】:
一个布尔数组可以被认为是一个二进制数,例如
boolean[] four = {true, false, false}; //100
我想将这样的数组转换为其十进制等价物,例如
int decimal = convertBooleanArrayToDecimal(four);
//decimal == 4
我该怎么做?
干杯,
皮特
【问题讨论】:
一个布尔数组可以被认为是一个二进制数,例如
boolean[] four = {true, false, false}; //100
我想将这样的数组转换为其十进制等价物,例如
int decimal = convertBooleanArrayToDecimal(four);
//decimal == 4
我该怎么做?
干杯,
皮特
【问题讨论】:
试试这样的。
long result = 0;
for (boolean bit : four) {
result = result * 2 + (bit ? 1 : 0);
}
【讨论】:
另一种解决方案:
long result = 0;
for (boolean bit: boolArray)
{
result <<= 1;
if (bit) result += 1;
}
这在数学上等同于 Nikita 的解决方案,但我发现位移版本更清晰。
【讨论】: