begin process at 2012 05 29 10:24:36
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Fichier & Disque

 > 

Ecrire un fichier directement en hexadécimal


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Ecrire un fichier directement en hexadécimal

dimanche 11 novembre 2007 à 04:13:33 | Ecrire un fichier directement en hexadécimal

AlphaScorpius

Bonjour,

Après m'être récemment interrogé sur la manière dont l'on pouvait créer un fichier bitmap, et avoir étudié leur structure hexadécimale, j'en suis arrivé à la question: "mais comment écrit-on un fichier en hexadécimal à la base?".

J'ai donc cherché un peu partout avec google sur la manière d'écrire un fichier en hexa, mais je me suis vite rendu qu'absolument toutes les fonctions que je trouvais faisaient intervenir une chaine de caractères comme argument, chaine qui serait ensuite écrite dans le fichier. Le mystère reste donc entier pour moi, c'est pourquoi je suis venu ici dans l'espoir que quelqu'un pourrait éclairer ma lanterne.

Pour expliciter ce que je voudrais pouvoir faire:

J'aimerais pouvoir écrire par exemple "a5" dans un fichier, et en ouvrant ce fichier avec un éditeur hexadecimale voir exactement a5, et pas la convertion hexadécimale de la chaine de caractères "a5" qui se traduirait par 61 35 ou quelque chose du genre.

Merci d'avance.
dimanche 11 novembre 2007 à 09:26:17 | Re : Ecrire un fichier directement en hexadécimal

BruNews

Administrateur CodeS-SourceS
Normal de ne pas comprendre si on se demande comment franchir l'échelon 5 avant d'avoir passé le 2.

Un fichier "hexa" serait un fichier texte, l'hexa n'étant qu'une représentation de ce qui est vraiment et toujours en interne, DU BINAIRE.

ciao...
BruNews, MVP VC++
dimanche 11 novembre 2007 à 13:06:44 | Re : Ecrire un fichier directement en hexadécimal

Neo_Fr

Membre Club
Salut, Utilise cette fonction ca devrait marcher: DWORD __stdcall Write2Hex(char* FilePath, char* szData) { static const BYTE Table[16] = {0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65 , 0x66}; HANDLE hFile; BYTE* Buffer; DWORD DataLen = 0, i = 0, bw = 0; DataLen = strlen(szData); if(!DataLen) goto Error; hFile = CreateFile(FilePath, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 0, 0); if(hFile == INVALID_HANDLE_VALUE) goto Error; Buffer = (BYTE*) HeapAlloc(GetProcessHeap(), HEAP_NO_SERIALIZE|HEAP_ZERO_MEMORY, (DataLen*2)+1); if(!Buffer) goto Error; while(1) { Buffer[2*i] = Table[(szData[i]>>4) & 0x0f]; Buffer[2*i+1] = Table[(szData[i]) & 0x0f]; if(i == DataLen) break; i++; } if(!WriteFile(hFile, Buffer, (DataLen*2), &bw, 0)) goto Error; Error: if(hFile) CloseHandle(hFile); if(Buffer) HeapFree(GetProcessHeap(), HEAP_NO_SERIALIZE, Buffer); return bw; } Neo_Fr
dimanche 11 novembre 2007 à 13:43:35 | Re : Ecrire un fichier directement en hexadécimal

AlphaScorpius

@BruNews

Désolé de l'imprecision, effectivement quand je dis vouloir écrire en "hexa" j'ai pleinement conscience que cela revient à écrire directement le fichier en binaire, le passage de l'un à l'autre n'étant pas bien compliqué.

@Neo_Fr

Merci pour la fonction, je vais la décortiquer pour comprendre morceau par morceau comment elle fonctionne.



Cette discussion est classée dans : fichier, ecrire, chaine, hexadécimal, a5


Répondre à ce message

Sujets en rapport avec ce message

Ecrire en binaire dans un fichier [ par pheno ] Bonjour Je dois réaliser un tp en C sur la compression avec la méthode Huffmanj ai construit l arbre et je récupère le chemin dans une chaine de carac Ecrire dans un fichier [ par salutbonjour ] Bonjour ,J'aimerais savoir comment saisir une chaine de caracteres et ensuite l'enregistrer dans un fichier.J'ai deja essaye mais sans succes car voye lire,ecrire, et sauver un fichier [ par Gipsy974 ] 1deja merci de lire mon pbpuisma kestion est comment fait on pour creer un fichier ds lekel on met des donnes.Aussi, je voudrai savoir comment "charge Probleme de lecture d'un fichier x [ par Lavieillefolle ] Salut, j'aimerais savoir pourquoi, lorsque je tente de lire un fichier, avec ce code, je n'obtient qu'une boucle infinie?Code :#include #include main( Ecrire une valeur et sa clé dans un fichier XML en c++ ? [ par Armandopoulos ] Salut !! J ai bien savoir comment je peux ecrire un parser en c++ pour y mettre des valeurs et leurs clés pour pouvoir les lire apres.Je serais vraime ecrire octet par octet dans un fichier [ par naycos ] Voila je dois travailler dans un fichier ouvert en binaire (mode "w+b")Le but est d'écrire octet par octet. Bon du coup je me tourne naturelllement ve Récupérer une chaine dans un fichier texte [ par alncool ] En fait je dispose d'une classe avec trois attributs de type string. J'ai réalisé une surcharge de l'opérateur << pour pouvoir écrire dans un fichier HELP HELP EN C !!! [ par cali1983 ] Voilà j'ai un problème pour crypter un texte j'ai fais un programme il n'a aucune erreur si ce n'est qu'il veut pas faire ce que je dis.Il ne veut pas lire un fichier en c++ et ecrire [ par ritalinho ] Ritalinhoint main(){ ifstream fichierEntree; // Test d'ouverture de fichier char buffer[1024]; fichierEntree.open("adresse.txt", ios::in ) CFile [ par El_Che ] Bonjour je suis sur un projet MFC et j'ecris avec la fonction File.write(tableau, taille) mais le probleme c que quand j'ouvre le fichier en binaire i


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,281 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales