У меня есть простая программа, которую я скомпилировал как в MinGW, так и в Visual C++ 2008 Express, и оба дают выходной файл размером более 88200. Когда я устанавливаю s = 0, обе программы работают как ожидалось. Что я делаю не так?Почему я получаю поврежденный вывод в моем файле?
#include <fstream>
using namespace std;
int main(int argc, char *argv[])
{
int i;
short s;
fstream f;
f.open("test.raw", ios_base::out);
for(i = 0; i < 44100; i++)
{
s = i & 0xFFFF; // PROBLEM?
f.write(reinterpret_cast<const char *>(&s), sizeof(s));
}
f.close();
return 0;
}
Обратите внимание, что такого рода вещи не будут переноситься через архитектуры различной эндианности. (По крайней мере, вы не сможете прочитать файл, написанный одним из них на другом.) – Thanatos