Besoin d'une astuce :)

Résolu
lamoueste Messages postés 76 Date d'inscription lundi 5 septembre 2005 Statut Membre Dernière intervention 3 juillet 2007 - 17 nov. 2005 à 11:35
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 17 nov. 2005 à 13:54
Alors voila j'ai un probleme, je dois ouvrir un fichier binaire et le mettre en format txt : pour cela je dois convertir les octets tirés du fichier binaire en caractere ascii. cependant se pose un probleme : celui des caracteres non imprimable -> code ascii <= 0x20. Alors je voudrais savoir comment ecrire ces caracteres en hexa a l'interieur de mon fichier txt. En fait mon souci est plutot d'algo je n'est pas la moindre idee comment m'y prendre... si kkun a deja eu a faire cette manip ca m'aiderai bcp :)

++ et merci :)

7 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 nov. 2005 à 11:56
en ultra simple: ultoa(val, dest, 16);

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
3
lamoueste Messages postés 76 Date d'inscription lundi 5 septembre 2005 Statut Membre Dernière intervention 3 juillet 2007
17 nov. 2005 à 11:42
Le fichier txt apres traitement se presentera comme cela :

SECUBP4 : . . ÿ $

SECUBP5 : . . . .

SECUBP6 : . & .

Le but est pour moi de remplacer les '.' et les caracteres par les valeurs en hexa initialement tirées du fichier binaire
0
lamoueste Messages postés 76 Date d'inscription lundi 5 septembre 2005 Statut Membre Dernière intervention 3 juillet 2007
17 nov. 2005 à 12:01
euh ouai mais ca ressemble a quoi la fonction ultoa ? j'ai pas trouve sur : http://dev.winsysdev.com

:(
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 nov. 2005 à 12:14
Les fonctions ne se documentent pas dans ma signature mais dans MSDN.
Toujours se passer de l'eau fraiche sur le visage au lever, ça réveille.

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 nov. 2005 à 12:42
En nettement + rapide, aucun appel de fonction et donc pas empilage des 3 params de ultoa.


char szappname[] = "Teste";


#ifndef BNINLINE
#ifdef __cplusplus
#define BNINLINE inline
#else
#define BNINLINE __inline
#endif /* __cplusplus */
#endif /* BNINLINE */


BNINLINE char* bnByteToHex(BYTE b, char *dst) // return ptr sur NULL final
{
__asm {
mov ecx, dst
mov al, b
add ecx, 2
mov dl, al
mov byte ptr[ecx], 0
and al, 15
shr dl, 4
add al, 48
cmp al, 57
jbe short btohx1
add al, 7
btohx1:
add dl, 48
mov [ecx-1], al
cmp dl, 57
jbe short btohx2
add dl, 7
btohx2:
mov [ecx-2], dl
mov eax, ecx
}
}


void __stdcall Tester()
{
char buf[24], *c;

buf[0] = '0';
buf[1] = 'x';
c = bnByteToHex(32, buf + 2);
*c++ = 32; // UN ESPACE
strcpy(c, "YOUPI");
// SORTIRA: "0x20 YOUPI"
MessageBox(0, buf, szappname, 0);
}

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
0
lamoueste Messages postés 76 Date d'inscription lundi 5 septembre 2005 Statut Membre Dernière intervention 3 juillet 2007
17 nov. 2005 à 13:38
yop merci encore mais j'ai pas trouve sur MSDN ULTOA ou alors j'ai mal cherche >< mais ca me semble parfaitement adapté d'apres ce que g trouve sur le net merci encore brunew
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 nov. 2005 à 13:54
0
Rejoignez-nous