Escribir datos binarios
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?
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.