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/
Dans le messageXns956FB9965237Azoubidamanhotmailcom@212.27.42.68,
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 mm@gdzid.com
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
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
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/
Dans le messageroh5d.32423$pA.2300377@news20.bellglobal.com,
Dans le messageXns956FB9965237Azoubidamanhotmailcom@212.27.42.68,
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 mm@gdzid.com
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
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
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/
Dans le messagejBh5d.32538$pA.2304604@news20.bellglobal.com,
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 mm@gdzid.com
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).
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
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
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
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
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/
Dans le messageXns956FC40BB1D8Fzoubidamanhotmailcom@212.27.42.68,
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 mm@gdzid.com
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
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/
Loïc Joly
Michaël Delva wrote:
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
Un truc du genre (non testé et non portable) :
unsigned long val = 0x32595559; string result(4);
for (int i=0 ; i<4 ; ++i) { result[i] = static_cast<char>(val & 0xFF); val = val >> 16; }
Michaël Delva wrote:
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
Un truc du genre (non testé et non portable) :
unsigned long val = 0x32595559;
string result(4);
for (int i=0 ; i<4 ; ++i)
{
result[i] = static_cast<char>(val & 0xFF);
val = val >> 16;
}
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
Un truc du genre (non testé et non portable) :
unsigned long val = 0x32595559; string result(4);
for (int i=0 ; i<4 ; ++i) { result[i] = static_cast<char>(val & 0xFF); val = val >> 16; }
Michaël Delva
J'ai une erreur:
unsigned long h = 0x32595559;
std::string s(static_cast<char*>(&h), 4);
Me sort:
Impossible de transtyper de 'unsigned long *' en 'char *'
J'ai une erreur:
unsigned long h = 0x32595559;
std::string s(static_cast<char*>(&h), 4);
Me sort:
Impossible de transtyper de 'unsigned long *' en 'char *'
Impossible de transtyper de 'unsigned long *' en 'char *'
Yep, désolé, code non testé, il faut un reinterpret_cast...
-- Michel Michaud http://www.gdzid.com FAQ de fr.comp.lang.c++ : http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
M. B.
"Loïc Joly" a écrit dans le message de news:4155a914$0$726$
Michaël Delva wrote:
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
Un truc du genre (non testé et non portable) :
unsigned long val = 0x32595559; string result(4);
for (int i=0 ; i<4 ; ++i) { result[i] = static_cast<char>(val & 0xFF); val = val >> 16; }
Je pense que tu voulais ecrire
val = val >> 8;
MB
"Loïc Joly" <loic.actarus.joly@wanadoo.fr> a écrit dans le message de
news:4155a914$0$726$8fcfb975@news.wanadoo.fr...
Michaël Delva wrote:
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
Un truc du genre (non testé et non portable) :
unsigned long val = 0x32595559;
string result(4);
for (int i=0 ; i<4 ; ++i)
{
result[i] = static_cast<char>(val & 0xFF);
val = val >> 16;
}
"Loïc Joly" a écrit dans le message de news:4155a914$0$726$
Michaël Delva wrote:
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
Un truc du genre (non testé et non portable) :
unsigned long val = 0x32595559; string result(4);
for (int i=0 ; i<4 ; ++i) { result[i] = static_cast<char>(val & 0xFF); val = val >> 16; }
Je pense que tu voulais ecrire
val = val >> 8;
MB
James Kanze
"Michaël Delva" writes:
|> Je voudrais convertir un hexa en sa représentation texte.
Hexa, c'est une 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.
Ça dépend du rapport entre les deux. Je n'en vois pas du tout dans le deuxième cas ; dans le premier, j'ai l'impression que c'est les codes de caractères en hexadécimal, avec la chaîne inversée. Ce qui n'est pas difficile à faire :
std::ostream& codeHexaInverse( std::ostream& out, std::string const& in ) { for ( std::string::const_reverse_iterator it = in.begin() ; it != in.end() ; ++ it ) { out << GB_HexFmt( 2 ) << (int)(unsigned char)*it ; } }
(Le manipulateur GB_HexFmt est disponible sur ma site.)
Seulement, l'intérêt m'en semble si faible que je suis convaincu que ce n'est pas ce que tu veux faire:-). Je me démande, par exemple, si tu n'es pas en train de confondre hexa et format interne (qui est binaire, mais avec une signification différente de binaire que celle de hexadécimal). Mais dans ce cas-là, je me démande toujours 1) pourquoi l'inversion des caractères, et 2) le rapport entre les octets et le texte dans le deuxième exemple.
-- James Kanze 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
|> Je voudrais convertir un hexa en sa représentation texte.
Hexa, c'est une 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.
Ça dépend du rapport entre les deux. Je n'en vois pas du tout dans le
deuxième cas ; dans le premier, j'ai l'impression que c'est les codes de
caractères en hexadécimal, avec la chaîne inversée. Ce qui n'est pas
difficile à faire :
std::ostream&
codeHexaInverse( std::ostream& out, std::string const& in )
{
for ( std::string::const_reverse_iterator it = in.begin() ;
it != in.end() ;
++ it ) {
out << GB_HexFmt( 2 ) << (int)(unsigned char)*it ;
}
}
(Le manipulateur GB_HexFmt est disponible sur ma site.)
Seulement, l'intérêt m'en semble si faible que je suis convaincu que ce
n'est pas ce que tu veux faire:-). Je me démande, par exemple, si tu
n'es pas en train de confondre hexa et format interne (qui est binaire,
mais avec une signification différente de binaire que celle de
hexadécimal). Mais dans ce cas-là, je me démande toujours 1) pourquoi
l'inversion des caractères, et 2) le rapport entre les octets et le
texte dans le deuxième exemple.
--
James Kanze
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
|> Je voudrais convertir un hexa en sa représentation texte.
Hexa, c'est une 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.
Ça dépend du rapport entre les deux. Je n'en vois pas du tout dans le deuxième cas ; dans le premier, j'ai l'impression que c'est les codes de caractères en hexadécimal, avec la chaîne inversée. Ce qui n'est pas difficile à faire :
std::ostream& codeHexaInverse( std::ostream& out, std::string const& in ) { for ( std::string::const_reverse_iterator it = in.begin() ; it != in.end() ; ++ it ) { out << GB_HexFmt( 2 ) << (int)(unsigned char)*it ; } }
(Le manipulateur GB_HexFmt est disponible sur ma site.)
Seulement, l'intérêt m'en semble si faible que je suis convaincu que ce n'est pas ce que tu veux faire:-). Je me démande, par exemple, si tu n'es pas en train de confondre hexa et format interne (qui est binaire, mais avec une signification différente de binaire que celle de hexadécimal). Mais dans ce cas-là, je me démande toujours 1) pourquoi l'inversion des caractères, et 2) le rapport entre les octets et le texte dans le deuxième exemple.
-- James Kanze 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