Ho un dispositivo che mi invia dati binari di tipo uint32_t. Voglio salvare i dati in un file binario. Ecco il mio codice:Scrittura di file binari in C++
#include<iostream>
#include<fstream>
#include <cstdlib>
using namespace std;
int main()
{
ofstream myFile ("data2.bin", ios::out | ios::binary);
bool buffer[32];
for (int k = 0; k<100; k++)
{
for (int i = 0; i<32;i++)
{
buffer[i] = (bool)rand()%2;
}
myFile.write ((char*)&buffer, 32);
}
myFile.close();
}
Funziona, ma la dimensione del file è 3.2 kB, non 0.4 kB. Inoltre, quando provo a leggere i dati dal file (i dati prodotti dal mio dispositivo), ottengo risultati strani, non nel formato descritto nel manuale. Certo, ci sono più dati di quanto mi aspetti.
Cosa sto sbagliando?
Stai scrivendo 100 volte 32 byte. Perché pensi che dovrebbe essere 0.4kB? Mi sto perdendo qualcosa? --- Oh, capisco ... – nickie
32 bool è normalmente 32 byte. unit32 è un tipo di dati a 32 bit che è 4 byte in un byte da 8 bit. – NathanOliver
Quindi, qual è il modo più sicuro per scrivere uint_32t in un file binario? – user2738748