Problème de conversion Héxadécimal -> Décimal

Résolu/Fermé
Nartek Messages postés 3 Date d'inscription mercredi 14 mai 2014 Statut Membre Dernière intervention 14 mai 2014 - 14 mai 2014 à 15:14
Nartek Messages postés 3 Date d'inscription mercredi 14 mai 2014 Statut Membre Dernière intervention 14 mai 2014 - 14 mai 2014 à 15:57
Bonjour,

Mon problème est un problème de conversion :

J'ai un tableau de char comme suit : | L | 8 | S | 1 | 5 | : | 1 | 3 | 0 | , |

Dans les 3 avant dernières cases j'ai les caractères 1, 3 et 0 qui se traduisent en héxa par 0x31, 0x33 et 0x30.

Je cherche à affecter à une variable Entière non-signée (unsigned int) la valeur 130 ou pour d'autre utilisations la valeur qu'il y a en regroupant ces trois cases.

J'ai pensé à faire comme ça :

N = (( Tab[6] & 0x0F ) << 8 ) + (( Tab[7] & 0x0F ) << 4 ) + (( Tab[8] & 0x0F )) ;

cela me donne N = 0x130 je pense, mais je ne veux pas que ce soit de l'héxadécimal mais plutôt du décimal : N = 130.

Comment puis je passer de N = 0x130 à N = 130 ?

Merci d'avance.

Cordialement,



A voir également:

1 réponse

Utilisateur anonyme
14 mai 2014 à 15:42
Bonjour

Tu pourrais le faire directement avec scanf, mais pour rester dans l'esprit de ce que tu as déjà fait :
N = (( Tab[6] & 0x0F ) * 100 ) + (( Tab[7] & 0x0F ) * 10 ) + (( Tab[8] & 0x0F )) ; 
1
Nartek Messages postés 3 Date d'inscription mercredi 14 mai 2014 Statut Membre Dernière intervention 14 mai 2014
14 mai 2014 à 15:57
Super merci beaucoup du coup je le fait comme ça.

Sauf que les * 100 et *10, j'utilise :

On veut B = A x 10 ===> B = ((A << 2) + A) << 1

La raison est que je programme sur microcontroleur et qu'au niveau du temps d'execution il est plus court d'utiliser les décalages que les fonctions mathématiques.

Merci beaucoup, à plus.
0