Я работаю над домашней работой по кодированию Хаффмана.У меня уже есть алгоритм Хаффмана, но мне нужно немного изменить его для работы с двоичными файлами.Я потратил некоторое время на чтение связанных проблем, и, возможно, из-за моего непонимания типов данных и двоичных файлов, я все еще немного борюсь, так что, надеюсь, я не буду повторять предыдущий вопрос (я не буду публиковать код, связанный счасть программы).
Вот ключевая фраза: «Можно предположить, что каждый символ, который будет отображаться в кодовом слове, является 4-байтовой двоичной строкой». И я думаю, что я знаю, что Char представляет один байт.и unsigned int представляет четыре байта, поэтому я предполагаю, что я должен читать входные четыре байта за раз в неподписанный int Buffer, а затем собирать данные для части программы Хаффмана.
int main() {
unsigned int buffer;
fstream input;
input.open("test.txt", ios::in | ios::binary);
while(input) {
input.read(reinterpret_cast<char *>(&buffer), 4);
//if buffer does not exist as unique symbol in collection of data add it
//if buffer exists update statistics of symbol
}
input.close();
}
это похоже на хороший способ обработки данных?Как мне обработать самый конец файла, если осталось только 1,2 или 3 байта?Итак, я просто храню буфер как unsigned int в структуре.Просто из любопытства, как мне преобразовать буфер в строку символов?
Редактировать: Какой лучший способ сохранить заголовок сжатого файла Хаффмана?