Melhor maneira de converter 8 booleanos em um byte?

Quero salvar 8 booleanos em um byte e depois salvá-los em um arquivo (este trabalho deve ser feito para dados muito grandes). Usei o código a seguir, mas não tenho certeza de que seja o melhor (em termos de velocidade e espaço):

int bits[]={1,0,0,0,0,1,1,1};
char a='\0';
for (int i=0;i<8;i++){
  a=a<<1;
  a+=bits[i]
}
//and then save "a"

alguém pode me dar um código melhor (mais velocidade)?

questionAnswers(3)

yourAnswerToTheQuestion