4
一個布爾數組可以被認爲是一個二進制數,例如Java - 將boolean []轉換爲十進制
boolean[] four = {true, false, false}; //100
我想將這樣一個數組轉換爲十進制數,例如,
int decimal = convertBooleanArrayToDecimal(four);
//decimal == 4
我該怎麼做?
乾杯,
皮特
一個布爾數組可以被認爲是一個二進制數,例如Java - 將boolean []轉換爲十進制
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的解決方案,但我找到比特移位版本更清晰。
請查看該表達式!我相信你會乘以(2 +位),而不是增加位,乘以2. – 2010-08-16 17:39:05
@Carl:我很確定乘法優先。但是一對parens來澄清/確保它不會受到傷害。 – BlairHippo 2010-08-16 17:40:45
@Carl你說得對,我也看到了錯誤並修復了它。 – 2010-08-16 17:40:52