begin process at 2008 08 20 14:48:02
1 228 884 membres
250 nouveaux aujourd'hui
14 258 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : algo conversion fiichier en hexadécimal [ Windows / Autre ] (developvbdebut)

algo conversion fiichier en hexadécimal le 10/01/2008 21:22:59

developvbdebut
Membre Club
Bonsoir

Je cherche un algo pour convertir des fichiers en Hexadécimal.

J'ai cherché sur le web, mai je n'ai pas trouvé.

Pouvez vous m'aider?

Merci.


Bonne Année 2008.

A +

Re : algo conversion fiichier en hexadécimal le 10/01/2008 22:15:38

Neo_Fr
Membre Club
Salut, Un exemple: DWORD __stdcall ConvertFile2Hex(LPSTR InFile, LPSTR OutFile) { static const BYTE HexaTable[16] = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66 }; HANDLE hInFile, hOutFile; BYTE* Buffer, *InBuff, *OutBuff; DWORD i, br, bw, btw = 0; hInFile = CreateFile(InFile, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0); if(hInFile == INVALID_HANDLE_VALUE) return 0; hOutFile = CreateFile(OutFile, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 0, 0); if(hOutFile == INVALID_HANDLE_VALUE) goto Error; Buffer = (BYTE*) HeapAlloc(GetProcessHeap(), HEAP_NO_SERIALIZE, 0x300000); // 3 mo if(!Buffer) goto Error; InBuff = Buffer; OutBuff = &InBuff[0x100000]; while(1) { if(!ReadFile(hInFile, Buffer, 0x100000, &br, 0)) goto Error; if(!br) break; i = 0; while(1) { OutBuff[2*i] = HexaTable[(InBuff[i]>>4) & 0x0f]; OutBuff[2*i+1] = HexaTable[(InBuff[i]) & 0x0f]; if(i++ == br) break; } if(!WriteFile(hOutFile, OutBuff, (br*2), &bw, 0)) goto Error; btw += bw; } Error: if(Buffer) HeapFree(GetProcessHeap(), HEAP_NO_SERIALIZE, Buffer); if(hOutFile) CloseHandle(hOutFile); if(hInFile) CloseHandle(hInFile); return btw; // Retourne le nb d'octet ecrit } Neo_Fr

Re : algo conversion fiichier en hexadécimal le 10/01/2008 22:32:13

SAKingdom
Membre Club
Faudrait déjà savoir quesqu'il veut dire par : "convertir des fichiers en Hexadécimal"

while(1)
{
    ...
     if(i++ == br) break;
}

do while

Encore une fois, tes goto pourraient être très facilement évités et on supprimerait, en même temps, tout ces tests pour savoir si la mémoire est allouée ou si le fichier est ouvert. En plus, ceux qui sont dans la boucle sont complètements inutiles. break fera la même chose.

HEAP_NO_SERIALIZE
As tu lue MSDN sur ce flag ?
"This value should not be specified when accessing the process heap"
En plus, avec ce flag, tu limites l'utilisation de cette fonction à un seul thread.

C++ (@++)


Re : algo conversion fiichier en hexadécimal le 10/01/2008 22:40:19

SAKingdom
Membre Club
"on supprimerait, en même temps, tout ces tests pour savoir si la mémoire est allouée ou si le fichier est ouvert"

Je parle de ces tests:
if(Buffer) HeapFree(GetProcessHeap(), HEAP_NO_SERIALIZE, Buffer);
if(hOutFile) CloseHandle(hOutFile);
if(hInFile) CloseHandle(hInFile);

C++ (@++)


Re : algo conversion fiichier en hexadécimal le 10/01/2008 22:51:08

developvbdebut
Membre Club
Re bonsoir

Pardon, je me suis mal exprimer.

Je souhaite récupérer le code hexadécimal des fichiers images.


A+

Re : algo conversion fiichier en hexadécimal le 10/01/2008 22:53:03

Neo_Fr
Membre Club
Personnelement je trouve les goto pr la gestion des erreurs bien plus propre (et plus rapide a écrire) que des tas d'imbrications, pour HEAP_NO_SERIALIZE suffit juste l'enlever si ca doit etre utiliser ds plusieurs threads.. Neo_Fr

Re : algo conversion fiichier en hexadécimal le 10/01/2008 22:53:33

Neo_Fr
Membre Club
Le code hexadecimal des fichiers image?? Neo_Fr

Re : algo conversion fiichier en hexadécimal le 10/01/2008 22:53:46

SAKingdom
Membre Club
Tout est déjà en hexadécimal (l'hexadécimal n'étant qu'une représentation "compacté" du binaire). Aucun besoin de convertir quoi que ce soit. Tu stock ton image dans un buffer de BYTE et tu effectues les traitements souhaité.

C++ (@++)


Re : algo conversion fiichier en hexadécimal le 10/01/2008 22:55:42

SAKingdom
Membre Club
On utilise généralement les goto pour optimiser son code or ici tu ne fais que rajouter des instructions. 3 if imbriqués ne sera pas plus compliqué à taper.

C++ (@++)


Re : algo conversion fiichier en hexadécimal le 10/01/2008 23:00:03

developvbdebut
Membre Club
Re

Quel traitement  SAKingdom ?


Où puis je trouvé un tuto sur ce sujet?

Je veux récupérer le code hexa des images pour les utiliser dans une librairie graphique.

A+


[Page 1 Page 2]
Classé sous : conversion, algo, hexadécimal, fiichier

Participer à cet échange

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS