Java - конвертировать логическое [] в десятичное - PullRequest
4 голосов
/ 16 августа 2010

Логическим массивом можно считать двоичное число, например:

boolean[] four = {true, false, false}; //100

Я хотел бы преобразовать такой массив в его десятичный эквивалент, например

int decimal = convertBooleanArrayToDecimal(four);
//decimal == 4

Как мне это сделатьтак?

ура,

Пит

Ответы [ 2 ]

5 голосов
/ 16 августа 2010

Попробуйте что-то вроде этого.

long result = 0;
for (boolean bit : four) {
    result = result * 2 + (bit ? 1 : 0);
}
3 голосов
/ 16 августа 2010

Альтернативное решение:

long result = 0;
for (boolean bit: boolArray)
{
    result <<= 1;
    if (bit) result += 1;
}

Это математически эквивалентно решению Никиты, но я считаю, что версия со сдвигом битов более понятна.

...