Domanda

Sto scrivendo su un file binario usando fstream e quando apro il file usando un flag binario.

Avevo bisogno di scrivere del testo come binario, che una semplice scrittura ha fatto il trucco. Il problema è che ho anche bisogno di scrivere (come mostrato in esadecimale) 0. Il valore quando aperto nel blocco note binario è mostrato zero, ma quando ho provato a scrivere questo valore non zero era un valore di 30 in esadecimale.

Come scrivi dati specifici come questo?

È stato utile?

Soluzione

Quando apri il flusso, usa il flag ios :: binary per specificare l'output binario. Ulteriori informazioni sono disponibili qui .

Per quanto riguarda la scrittura di 0, quando vedi 30 in esadecimali stai scrivendo il carattere '0', non il numero binario 0. Per farlo con un fstream puoi fare qualcosa del tipo:

my_fstream << 0;

Tieni presente che i dati binari 0 non hanno una rappresentazione testuale, quindi non sarai in grado di leggerlo nel Blocco note come se stessi leggendo il carattere '0'.

Altri suggerimenti

Probabilmente hai solo bisogno di qualcosa del genere, migliora come ritieni opportuno:

ofstream file("output.bin", ios::out | ios::binary);
if (file.good())
{
    char buf[1] = {0};
    file.write(buf, sizeof(buf));
    file.close();
}

Sono già stati pubblicati collegamenti a soluzioni e documentazione più sofisticate.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top