[Langage C] concatener nombre hex

Bonjour

Il y a t-il en langage C une fonction qui fait par exemple ça :

[code]long toto;

hex1 = 0XAB;
hex2 = 0xCD;
hex3 = 0xEF;

toto = JeChercheCettefonction(hex1 ,hex2,hex3);[/code]

Le résultat est :
toto vaut 0xABCDEF

Merci

[code]long toto;

hex1 = 0xAB;
hex2 = 0xCD;
hex3 = 0xEF;

toto = (hex1 << 8) & hex2;
toto = (toto << 8) & hex3;[/code]
Ne fonctionne pas ? :smt006

Moi, j’ai ca qui fonctionne :

include <stdio.h>

long concat(long a, long b, long c){

   long toto;

   toto = (a << 8)^b;
   toto = (toto << 8)^c;

   return toto;
}

main(){

   long hex1 = 0xAB;
   long hex2 = 0xCD;
   long hex3 = 0xEF;

   printf("toto vaut = 0x%X\n", concat(hex1,hex2,hex3));

}

Après compilation, et execution, résultat du programme :

toto vaut = 0xABCEDF

Le problème c’est que le décalage de bit à gauche n’est pas le même en fonction de ta valeur hexa…

Bonjour,

Je pense que Mr MisterFreez voulait écrire: un ou ‘|’ à la place d’un et ‘&’ dans:

toto = (hex1 << 8) & hex2;
toto = (toto << 8) & hex3;

Le ou ‘|’ me semble plus approprié que le ou exclusif ‘^’ :

Pour avoir l’affichage “toto vaut = 0xABCDEF” il faut écrire %X à la place de %x.

:smt111

[quote=“Dixippe”]Bonjour,

Je pense que Mr MisterFreez voulait écrire: un ou ‘|’ à la place d’un et ‘&’ dans:

toto = (hex1 << 8) & hex2;
toto = (toto << 8) & hex3;

Le ou ‘|’ me semble plus approprié que le ou exclusif ‘^’ :

Pour avoir l’affichage “toto vaut = 0xABCDEF” il faut écrire %X à la place de %x.

:smt111[/quote]

Bien vu pour le X, je corrige :smt001

Par contre, pour le ou exclusif peut être peux tu m’expliquer ce que ca change ?
En effet, la seule différence entre les 2 tables de vérité (or et xor), c’est dans le cas ou les 2 valeur valent 1, cas qui ne se présentera pas, puisque lorsqu’on décale les bit a gauche, ils sont remplacés par des 0 ==> on aura toujours un 0 ou 0, ou alors un 0 ou 1, jamais un 1 ou 1, donc ^ ou | dans son cas, ca changera rien.
Si je me gourre, je veux bien que tu m’explique :smt001

Comment tu fais pour lui mettre un bonnet de père noël à ton bonhomme ? :open_mouth:

C’est juste un problème de logique, si tu dis “concaténer” alors c’est un ‘ou’.
Un ‘ou exclusif’ c’est concaténer plus autre chose, il se trouve que dans ton
exemple tu retombes sur tes jambes mais avec un autre exemple on pourrait démontrer
qu’avec un ‘ou exclusif’ on ne concatène pas!.

Pour ce qui est des smileys il faut clicker sur “Voir plus de smileys” sur ta gauche en édition.

:smt040 :smt069 :smt119 :smt024 :smt032 :smt043 :smt044 :smt111

(en fait c’est la séquence décalage + ou qui concatène…)

ah oué j’avais jamais fait gaffe (boulet inside) merci! :smt040 :smt111 :smt117 :smt043
On sait toujours pas si la réponse a convaincu notre ami hdgetnet :smt087