Как сохранить вывод кодирования Хаффмана в двоичный файл в двоичном формате вместо формата ASCii - PullRequest
0 голосов
/ 26 апреля 2020

После кодирования строки я получил вывод, подобный приведенному ниже, из кодирования Хаффмана и сохранил каждый бит в логическом массиве.

{0010010010010000000001000100010000010001000100000101010101010101000010000111}

Теперь я пытаюсь записать каждый бит в .bin файл в двоичном формате вместо записи символов ASCII. Тем не менее, я прочитал несколько вопросов на сайте переполнения стека, и многие из них упоминались для использования вектора или для выполнения некоторых операций сдвига битов. Я попробовал первый вариант, сохранив каждый бит в векторе, но я не могу найти способ записать содержимое vector в файл .bin, потому что он выдает ошибку вроде «принятия адреса временного -fpermissive». В связи с ошибкой у меня есть идея, что я могу испортить работу с указателями, и я не знаю много о том, как работает сдвиг битов , Итак, может ли кто-нибудь дать мне пошаговое описание или исходный код о том, как сохранить вышеприведенный вывод в двоичном формате в BIN-файле? Например: 16-битное хранилище как 2 байта. Я ожидаю ответа в c ++

Vector<bool> bits; 

ofstream data; 
data.open("file.bin",ios::out|ios::binary); 
size_t size = bits.size();

 for (int  i=0; i < size; i++) 
{

      data.write(reinterpret_cast<char*>(&bits[i],sizeof(bool))); 

} 

data.close(); 

Это код, который я использовал для записи содержимого вектора в двоичный файл. Мне нужен массив битов в реальном байте, а не в ascii

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

...