[C++] Lire et écrire directement le code hexa d'un fichier
Forum Programmation : [C++] Lire et écrire directement le code hexa d'un fichier
Bonjour,
J'ai fais pas mal de recherche et je n'arrive à rien. Je voudrais faire un programme qui, lorsqu'on le lance, crée un fichier image BMP. Je pourrais très bien fournir l'image avec le programme pour qu'il n'ait plus qu'à la recopier, mais c'est pas ce que je veux. J'aimerais que le code de l'image soit dans mon executable. Étant donné que le code ascii n'est pas toujours interprété de la même manière, je ne veux pas que mon programme écrive, comme dans un fichier texte, les symboles bizarres que l'on voit lorsque l'on ouvre une image avec le blocnote.
Dans un premier temps, j'aimerais pouvoir lire grâce a mon programme C++ le code hexa de l'image que l'on voit avec un éditeur hexadecimal pour ensuite copier ce code hexa et le mettre dans une chaine de mon code qui sera copier dans un fichier lorsque l'on désirera créer une image. Pour ce faire je cherche une manière d'écrire dans un fichier en hexa.
Exemple pour écrire:
Une variable contenant "42" ou 0x42.
Mon programme l'écrirait dans un fichier.
Et lorsque j'ouvre ce fichier avec blocnote/notepad++, la lettre "A" apparaitrait et non pas le chiffre "42".
Exemple pour lire:
Code :
|
Code :
|
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
Non, car imaginons que dans mon fichier "texte.txt" j'ai la lettre "A". Si je fais
Code :
|
J'obtiens un joli "41" dans ma fenêtre, ça c'est bien, vu que c'est le code hexa de "A".
Par contre si je fait
Code :
|
Lorsque j'ouvre texte.txt j'ai toujours "A" (heureusement) par contre si j'ouvre texte2.txt j'ai "41" alors que j'aimerais avoir "A".
Dans mon exécutable, j'aurai le code hexa de mon image BMP. C'est pourquoi je recherche une des deux solutions:
- Soit convertir l'hexa en ascii avant de le mettre dans le fichier (Un truc comme: FichierDestination<<ascii<<CodeEnHexa; )
- Soit pouvoir écrire mes codes hexa directement dans un fichier mais pas en mode "texte", le but étant qu'après avoir écrit "41" lorsque j'ouvre mon fichier texte il y ait la lettre "A" qui apparaisse.
Un idée? Parce que je nage...
Je ne comprends pas ce que tu veux faire.
Tes fichiers en binaires, contiennent toujours le code. Dans ton fichier texte, tu aura toujours la valeur 41h en binaire, si c'est juste transférer la valeur binaire, il suffit de faire:
Code :
|
Après si c'est pour convertir des chaines de caractère en objets ou autre type, il suffit d'utiliser istringstream.
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
En gros, j'aimerais pouvoir enregistrer un code hexa, exemple "41", dans un fichier mais au niveau binaire.
Si j'enregistre "41" dans un fichier texte (FichierDestination<<"41"; ) et que je l'ouvre après, il y aura le nombre "41". Moi j'aimerais pouvoir écrire "41" et que lorsque j'ouvre le fichier, il m'affiche la lettre "A".
J'ai essayé ça:
Code :
|
Mais à l'ouverture du fichier texte je vois "65" et avec un éditeur hexa je vois 35 36.
Si j'enlève le "fstream::binary" ça ne change rien...
Message édité par gagou7 le 18-06-2009 à 20:48:04
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
| CRicky a écrit : Et en envoyant un char ?
|
Merci ça marche !!!!!
Code :
|
Et un code pour extraire le code hexa de n'importe quel fichier, plus qu'à faire un copier-coller du resultat de ImageHexa.txt dans TabHexa (voir code ci-dessus).
Code :
|
Message édité par gagou7 le 22-06-2009 à 00:36:19
Il y a 1035 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

CRicky