Побитно записать в файл зашифрованный алгоритмом Хаффмана код
Привет, ХэшКод. Я написал алгоритм Хаффмана, построил дерево, получил новые коды символов, но никак не могу записать их побитово в файл. Имеется массив(string) единиц и нулей, в интернете нашел код:
ofstream fout("out.txt", ios::out | ios::binary);
for each(char s in bnr)
{
buf = buf | s << (7 - count);
count++;
if (count == 8)
{
count = 0;
fout << buf;
cout << buf;
buf = 0;
}
}
Но, он не работает, помогите пожалуйста и, по возможности, объясните на примере как правильно выполнять побитовые операции. Заранее спасибо!
UPD: Если кому нужно
ofstream fout("outcod.bin", ios::out | ios::binary);
unsigned char buf = 0;
int count = 0 , global_counter=0;
for each(unsigned char s in bnr)
{
buf = buf | (s & 1) << (7 - count);
count++;
global_counter++;
if (count == 8)
{
count = 0;
fout << buf;
buf = 0;
}
}
if (count>0)
{
fout << buf;
}
Источник: Stack Overflow на русском