Вот это:
out << reinterpret_cast<char*>(binary);
Записывает в поток указатель на char*. Не массив. Указатель.
Чтобы записывало массив, надо в цикле выводить элементы.
Не уверен, но может можно так:
out << std::string(reinterpret_cast<char*>(binary));