GNT sans publicité, site mobile, fonctionnalitées exclusives...

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
Lire les 12 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Michel Michaud
Le #834311
Dans le ,
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.


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/

Michel Michaud
Le #834310
Dans le messageroh5d.32423$,
Dans le ,
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.


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 !


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/


Michel Michaud
Le #834309
Dans le messagejBh5d.32538$,

J'ai posté trop vite (ayant reçu un appel téléphonique au moment
où je répondais).

unsigned long h= 0x32595559; // 4 octets contenant les codes
// ASCII de 2 Y U et Y


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 » :-)

char *t= (char*)(&h); // Je me permets l'écriture à la C pour ce
// problème de bas niveau :-)



Ici, il n'y a pas de qui permet de penser à une chaîne à
la C, ça ne fonctionnera pas...

// ou même
string s= static_cast<char*>(&h);


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/

Michaël Delva
Le #834308
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 !



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

Michel Michaud
Le #834307
Dans le ,
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/

Publicité
Suivre les réponses
Poster une réponse
Anonyme