В моем проекте мне нужно записать в двоичный файл последовательные неподписанные ints, и важно, чтобы каждое число занимало точные 4 байта. Но когда я открываю двоичный файл с шестнадцатеричным редактором, я вижу это странное событие: цифры написаны правильно только до номера 9; перед номером 10 он добавит еще один дополнительный байт и напишет «13» (и уже испорчен моим файлом). И странные вещи продолжают происходить - из числа 30 и далее будут записаны разные символы, по одному в сторону каждого номера. Почему? как исправить, по крайней мере вопрос размера? Вот мой простой пример кода:не может правильно записать большие неподписанные ints в двоичный файл - C++
int main()
{
string filename;
cin >> filename;
fstream mystream;
mystream.open(filename, ios::out);
if (mystream)
for (unsigned int i = 0; i < 3200; i++)
mystream.write((char*)&i, sizeof(unsigned int));
mystream.close();
return 0;
}
и прилагается изображение того, что я вижу в файле: file capture on hex editor
благодаря
Определение 'void main()' в глобальных именах является незаконным в стандартном C++. Вы должны использовать стандартный 'int main()'. – MikeCAT
правый. Я исправлю это; –