J'ai suivi le tutoriel sur cplusplus.com pour std :: ofstream :: binary et je n'arrive pas à obtenir la sortie hexadécimale dont j'ai besoin en mode binaire.Impossible d'écrire un fichier en mode binaire même avec ios :: binary
Je dois actuellement faire un projet en cryptographie et exiger que la sortie soit en mode binaire (et ne pas écrire les valeurs hexadécimales dans le contenu du fichier).
Ci-dessous un extrait de mon code (avec commentaires):
ofstream writeout(filename2.c_str(), ios::binary);
//ctextvec is the vector that stores the ciphertext
for (int i=0; i<ctextvec.size(); i+=2)
{
ostringstream oss, oss2;
//formatting of hex to string (adding missing '0')
oss << hex << setw(16) << setfill('0') << ctextvec[i];
oss2 << hex << setw(16) << setfill('0') << ctextvec[i+1];
//Stores all ciphertext characters as a string
storestr.append(oss.str());
storestr.append(oss2.str());
}
//Define new array to store characters for writing
char writearr[storestr.size()];
for(int i=0; i<storestr.size(); i++) writearr[i]=storestr[i];
//Perform write to file
for(int i=0; i<storestr.size(); i++)
writeout.write((char*)&writearr[i],sizeof(char));
writeout.flush();
writeout.close();
J'ai essayé beaucoup de méthodes et tout semblait vider le contenu dans un fichier plutôt que d'écrire en mode binaire. J'ai supposément besoin de cette commande pour montrer qu'un fichier est crypté (au moins).
Voici les captures d'écran du fichier que j'ai obtenu et ce que je devrais obtenir.
Toute aide est très appréciée!
Vous pouvez simplement écrire 'ctextvec.data()', la majeure partie de votre code est inutile. – tkausl