Écrire des données binaires
Question
J'écris dans un fichier binaire en utilisant fstream et lors de l'ouverture du fichier en utilisant un indicateur binaire.
J'avais besoin d'écrire du texte en binaire, une écriture simple a fait l'affaire. Le problème est que j’ai aussi besoin d’écrire (comme indiqué en hexadécimal) 0. La valeur lorsqu’elle est ouverte dans le bloc-notes binaire est affichée à zéro, mais lorsqu’on a essayé d’écrire cette valeur, sa valeur n'était pas zéro, elle était égale à 30 en hexadécimal.
Comment écrivez-vous des données spécifiques comme celle-ci?
La solution
Lorsque vous ouvrez le fstream, utilisez l’indicateur ios :: binary
pour spécifier la sortie binaire. Vous trouverez plus d’informations sur ici .
En ce qui concerne l'écriture 0, lorsque vous voyez 30 en hexadécimal, vous écrivez le caractère '0', et non le nombre binaire 0. Pour faire cela avec un fstream, vous pouvez faire quelque chose comme:
my_fstream << 0;
N'oubliez pas que les données binaires 0 n'ont pas de représentation textuelle, vous ne pourrez donc pas les lire dans le Bloc-notes comme vous pourriez lire le caractère '0'.
Autres conseils
Vous avez probablement juste besoin de quelque chose comme ça, améliorez-vous comme bon vous semble:
ofstream file("output.bin", ios::out | ios::binary);
if (file.good())
{
char buf[1] = {0};
file.write(buf, sizeof(buf));
file.close();
}
Des liens vers des solutions plus sophistiquées et de la documentation ont déjà été publiés.
Regardez ceci: http://www.cplusplus.com/forum/general/11272/