Ваш вопрос несколько неясен. Что именно у вас есть? У вас есть массив с элементами, содержащими отдельные биты вашего значения? Затем вам нужно составить реальное значение из этих битов, например
bit[0] = 0;
bit[1] = 0;
bit[2] = 1;
unsigned int value = (bit[0]) | (bit[1]<<1) | (bit[2]<<2);
Или у вас есть значение, которое вы хотите отобразить в двоичном виде? Затем вам нужно преобразовать значение в двоичное представление, извлекая отдельные биты и отображая соответствующий символ. К сожалению, модификатор двоичного представления не доступен для стандартных функций, использующих строки формата (так как %x
для шестнадцатеричных строк).
Или у вас есть строковое представление значения в двоичном формате? В этом случае вы можете захотеть взглянуть на strtoul , который может преобразовывать строковые представления значений в их значения для диапазона числовых баз, включая основание 2.
Как правило, число в C не имеет двоичного, шестнадцатеричного или любого другого формата. Число - это число, и единственный формат, который у него есть (кроме представления на реальной машине), это просто его длина и то, подписано ли оно или нет, (здесь я опускаю числа с плавающей запятой). «Двоичный», «шестнадцатеричный», «десятичный» и тому подобное являются только представлениями одного и того же значения для читателя, то есть человека. Значение на машине абсолютно идентично независимо от этого представления.
binary = newState[i-2], newState[i-1], newState[i]; // but if I did this, bin = 0, not 001.
Это выражение, которое использует оператор запятой . Вы не можете объединять такие значения или строки в C.