2013-10-04 2 views
0

C: преобразовать в целое, используя битыC: преобразовать в целое, используя биты

Мне нужно, чтобы получить целое значение от битовых массивов 0, 1.

Я хочу передать целые массивы и получить десятичное число используя бит-оператор.

Ниже приведено то, что я пробовал, но не работает, когда пытался передать int массивы, он работает с char * array. Есть ли способ передать int массивы и преобразовать их в десятичное число? Я хочу использовать бит-оператор.

int toInt(int* bin_arr) { 

    int val = 0; 
    while (*bin_arr) 
    val = (val << 1) | (*bin_arr++ == '1'); 
    return val; 
} 

Заранее спасибо.

+0

Арифметические операции обычно используются, чтобы делать то, что вы хотите. Выполнение этого с помощью бит-операций (и только бит-операций) сложнее, чем того стоит. –

+0

Что означает «целые массивы»? Вы имеете в виду массивы, содержащие только целые числа 1 и 0? –

+0

Исправление. Просто целое число –

ответ

0

Ваше условие цикла предполагает, что массив имеет 0-конец, который действителен для строк, но не целых массивов. Один из способов исправить это - передать параметр длины вместе с указателем int, чтобы вы знали, когда прекратить итерацию.

Кроме того, в этом выражении:

(*bin_arr++ == '1') 

вы должны удалить одиночные кавычки, если вы передаете целые числа, а не символы.

+0

Спасибо, теперь у меня есть val = (val << 1) | (* bin_arr ++ == 1); но функция просто возвращает 1. Как мне изменить while loop ... for (int i = 3; i> = 0; i--) Я сделал это, но, похоже, возвращаю значение независимо от моего массива, зависит только от начального значение i –

Смежные вопросы