Pregunta

Estoy escribiendo en un archivo binario usando fstream y cuando abro el archivo usando una bandera binaria.

Necesitaba escribir algo de texto como binario, que una simple escritura hizo el truco. El problema es que también necesito escribir (como se muestra en hexadecimal) 0. El valor cuando se abre en el bloc de notas binario se muestra cero, pero cuando se intenta escribir esto, el valor no es cero, era el valor de 30 en hexadecimal.

¿Cómo se escriben datos específicos como este?

¿Fue útil?

Solución

Cuando abra el fstream, use el indicador ios :: binary para especificar la salida binaria. Se puede encontrar más información aquí .

En cuanto a escribir 0, cuando ve 30 en hexadecimal está escribiendo el carácter '0', no el número binario 0. Para hacer eso con un fstream puede hacer algo como:

my_fstream << 0;

Tenga en cuenta que los datos binarios 0 no tienen representación textual, por lo que no podrá leerlos en el Bloc de notas como si pudiera leer el carácter '0'.

Otros consejos

Probablemente solo necesite algo como esto, mejore como mejor le parezca:

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

Ya se publicaron enlaces a soluciones y documentación más sofisticadas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top