Для написания двоичного файла наиболее полезный способ, который я нашел, состоит в том, чтобы сохранить весь двоичный файл в виде одного массива в памяти и затем переместить его на жесткий диск. Выполнение бита за раз, или байта за раз, или длинного беззнакового за один раз не так быстро, как хранение всех данных в массиве и использование одного экземпляра "fwrite ()" для сохранения его в жесткий диск.
size_t fwrite (const void * ptr, size_t size, size_t count, FILE * stream);
Ссылка: http://www.cplusplus.com/reference/clibrary/cstdio/fwrite/
На английском:
fwrite ([массив * сохраненных данных], [размер в байтах массива OBJECT. Для беззнаковых символов -> 1, для беззнаковых длинных длинных -> 8], [количество экземпляров в массиве], [FILE *])
Всегда проверяйте свою доходность на предмет подтверждения успеха!
Кроме того, можно привести аргумент о том, что максимально возможный тип объекта - это самый быстрый путь ([unsigned long long]> [char]). Хотя я не разбираюсь в кодировании "fwrite ()", я чувствую, что время для преобразования из естественного объекта, используемого в вашем коде, в [unsigned long long] займет больше времени в сочетании с написанием, чем "fwrite () "делать то, что у тебя есть.
Когда я изучал кодирование Хаффмана, мне потребовалось несколько часов, чтобы понять, что существует разница между [char] и [unsigned char]. Обратите внимание, что для этого метода всегда следует использовать переменные без знака для хранения чистого двоичного файла.