std::ofstream
по умолчанию открывает файл в текстовом режиме, что означает, что он может переводить символы новой строки ('\n'
двоичные 0x0a) в последовательность возврата каретки / новой строки ("\r\n"
, двоичные 0x0d и 0x0a).
Откройте выходной файл в двоичном режиме, и он, скорее всего, решит вашу проблему:
std::ofstream os("filename", ios_base::out | ios_base::binary);