OVH Cloud OVH Cloud

Convertir un hexa en texte

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

2 réponses

1 2
Avatar
Michaël Delva
Alors en fait je récupère grâce à DirectShow le GUID du compresseur utilisé
pour lire la vidéo.

Je récupère ceci pour YUY2:

32595559-0000-0010-8000-00AA00389B71

De plus la doc dit ceci:

A range of 2*32 GUIDs is reserved for representing FOURCCs. These GUIDs are
all of the form XXXXXXXX-0000-0010-8000-00AA00389B71 where XXXXXXXX is the
FOURCC code

Donc il faut que je convertisse la première séquence en une chaine texte
plus compréhensible ;)

Quant au deuxième exemple, c'est le code retourné pour le codec Divx 5 qui
est DX50.

Voilà tout
Avatar
kanze
"Michaël Delva" wrote in message
news:...

Alors en fait je récupère grâce à DirectShow le GUID du compresseur
utilisé pour lire la vidéo.

Je récupère ceci pour YUY2:

32595559-0000-0010-8000-00AA00389B71


Tu récupère ça comment ? Et c'est quoi, ton YUY2 ?

De plus la doc dit ceci:

A range of 2*32 GUIDs is reserved for representing FOURCCs. These
GUIDs are all of the form XXXXXXXX-0000-0010-8000-00AA00389B71 where
XXXXXXXX is the FOURCC code


C'est quoi, un GUID ? un FOURCC ?

J'ai l'impression que ce que tu « récupères », c'est un dump hexadécimal
de quelque chose. C-à-d que les huit chiffres hexadécimal sont en fait
la valeur dans un int ou un long de 32 bits. Mais alors, il y a quelque
chose de louche -- s'il s'agit réelement d'une valeur de 32 bits, ça n'a
aucun sens d'essayer à l'interpréter comme des caractères. Et si ce sont
des caractères, la declaration C++ du champ doit être char[4], et non
int ou long.

Si c'est jusque que quelque part, quelqu'un a mal déclaré le champ, la
solution la plus simple, c'est un reinterpret_cast pour changer le type.
Tes quatres caractères s'obtiennent alors avec :

std::string s( reinterpret_cast< char const* >( &champ ), 4 ) ;

Donc il faut que je convertisse la première séquence en une chaine
texte plus compréhensible ;)


Pour faire plus compréhensible, il faut d'abord comprendre. Si c'est
réelement un int ou un long, à peut près la seule chose plus
compréhensible que tu vas pouvoir faire, c'est l'afficher en décimal,
plutôt qu'en hexadécimal. Si en revanche, ce sont réelement des
caractères, que faire dépend de ce que tu maîtrises ou non : si tu
maîtrises la déclaration du champ, la solution évident, c'est de changer
cette déclaration pour qu'elle correspond à la réalité. Si tu ne la
maîtrises pas, en revanche (bibliothèque tièrce), je ne vois guère
d'autre solution que le reinterpret_cast, aussi moche soit-il.

Quant au deuxième exemple, c'est le code retourné pour le codec Divx 5
qui est DX50.


Tu sais, je ne travaille pas dans le même domaine que toi. Alors, ce que
tu viens de dire là, c'est du chinois pour moi.

--
James Kanze GABI Software http://www.gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34

1 2