Вы можете объединить восемь бит каждый в один символ:
int n = 0;
uint8_t value = 0;
for(auto c : str)
{
value |= static_cast<unint8_t>(c == '1') << n;
if(++n == 8)
{
// print value or buffer it elsewhere, if you want
// to print greater chunks at once
n = 0;
value = 0;
}
}
if(n != 0)
{
// one partial byte left
}
Байты имеют фиксированное количество бит (обычно восемь), и вы не можете просто отбросить их, они будут идтив ваш файл.Таким образом, вам нужно каким-то образом указать при повторном декодировании, сколько бит отбрасывать.Вы можете добавить дополнительный байт, сколько битов является действительным в самом последнем байте, вы можете кодировать общее количество бит каким-либо образом (и можете проверить, были ли прочитаны достаточные байты), ...