Если результат должен быть B01100001
, то байт 0 - это MSB (старший значащий бит), а не байт 7 ...
char line[8] = { 0, 1, 1, 0, 0, 0, 0, 1 };
unsigned char b = 0;
for ( int ii = 0; ii < 8; ii++ )
{
b <<= 1;
b |= line[ii];
}
Другие ответы, которые я видел, еслиЯ правильно их прочитал, поместил MSB в байт 7.
РЕДАКТИРОВАТЬ: исправлены кавычки;неправильно скопировал его раньше.