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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top