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