Terminapor a écrit :
ben bitshifts dans ce cas ?
Si t'as char a = 0x01 et b = 0x28,
int c = a+(b>>8) ça le fait pas ?
(au passage, atoi() et strol() c'est chaine de caractère-> décimal, par exemple char*chaine = "128", int a = atoi(chaine) )
|
(b>>8) == 0
Si on a bien l'entrée en hexa, qui indique un nombre en décimal, je pense que c'est plus un truc du genre
char strb[4];
sprintf(strb, "%x", b);
int result = 10*a + atoi(strb); // si a < 10, pas besoin de passer par un sprintf / atoi comme pour b
(faudra penser à tester que b est un nombre hexa ne comportant pas de lettres, atoi ne passera pas sinon)
edit: sinon si l'entrée et la sortie sont dans la meme base, le bitshift est la bonne solution
unsigned char a, b;
int c = (((int)a)<<8)+b;
Message édité par Iradrille le 30-03-2012 à 13:26:50