Convertir un hexa en texte
Le
Michaël Delva
Salut à tous,
Je voudrais convertir un hexa en sa représentation texte.
J'ai l'hexa suivant: 32595559 qui correspond à la chaine YUY2.
Ou alors 808802372 qui correspond à DX50.
Je ne sais malheureusement pas comment aller de l'une à l'autre.
Quelqu'un peut m'aider?
Merci d'avance
Je voudrais convertir un hexa en sa représentation texte.
J'ai l'hexa suivant: 32595559 qui correspond à la chaine YUY2.
Ou alors 808802372 qui correspond à DX50.
Je ne sais malheureusement pas comment aller de l'une à l'autre.
Quelqu'un peut m'aider?
Merci d'avance

Poser une question


Tu veux dire qu'il faut deviner le rapport entre la valeur
hexadécimale et le texte ? D'où vient ce problème, il doit bien
y avoir des explications, sinon bonne chance !
--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
Je crois que je viens de voir le rapport dans ton premier exemple
alors il y a peut-être une erreur dans ton deuxième...
unsigned long h= 0x32595559; // 4 octets contenant les codes
// ASCII de 2 Y U et Y
char *t= (char*)(&h); // Je me permets l'écriture à la C pour ce
// problème de bas niveau :-)
// ou même
string s= static_cast<char*>(&h);
cout << t << ' ' << s; // Devrait écrire YUY2 YUY2 si on a bien
// le bon ordre des octets en mémoire.
(Dans ton deuxième exemple (DX50), ta valeur ne serait pas en
décimal ?)
--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
J'ai posté trop vite (ayant reçu un appel téléphonique au moment
où je répondais).
Je supposais ici que les unsigned long ont quatre octets...
Sinon c'est toi qui sait où tu as la valeur à convertir,
je vais supposer que c'est dans « h » :-)
Ici, il n'y a pas de qui permet de penser à une chaîne à
la C, ça ne fonctionnera pas...
Même problème de ici...
Alors mettons plutôt :
string s(static_cast<char*>(&h), 4);
cout << s;
--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
Voici ce que j'ai comme infos depuis Microsoft:
DWORD fccYUY2 = '2YUY'; // Declares the FOURCC 'YUY2'.
Reversing the order is necessary because the Microsoft Windows operating
system uses a little-endian architecture. 'Y' = 0x59, 'U' = 0x55, and '2' =
0x32, so '2YUY' is 0x32595559.
Je voudrais donc faire l'inverse: aller de 0x32595559 à YUY2 par exemple
Oui, j'ai finalement compris (c'est ton deuxième exemple qui
était mêlant...). J'espère que mes autres réponses t'aideront...
--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/