Pb : Stockage char > 255. [Résolu]

Signaler
Messages postés
70
Date d'inscription
mercredi 1 octobre 2008
Statut
Membre
Dernière intervention
17 avril 2013
-
Messages postés
70
Date d'inscription
mercredi 1 octobre 2008
Statut
Membre
Dernière intervention
17 avril 2013
-
Bonjour a tous,


J'ai un souci concernant le stockage d'un nombre > 255 voici mon problème :


J'ai créer une appli pc qui contient un slider contrôle. Ce slider contrôle varie de -1000 à +1000.
Je souhaite récuperer la valeur du curseur et la stocker dans deux char pour la renvoyer sur le bus CAN.


Pour info voici mon code :


int z;
void CSimulationDlg::OnNMCustomdrawSlider3(NMHDR *pNMHDR, LRESULT *pResult)  

 LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
 CSliderCtrl *pSlider3=static_cast<CSliderCtrl *>(GetDlgItem(IDC_SLIDER3));

 z = pSlider3->GetPos();
 pSlider3->SetRange(0,2000);
 pSlider3->SetPos(1000);

 *pResult = 0;
}


Merci pour les propositions.


Cordialement
Romain

2 réponses

Messages postés
51
Date d'inscription
lundi 17 janvier 2005
Statut
Membre
Dernière intervention
13 mars 2011
1
Salut
Pas sur d'avoir compris ton probleme. Dit moi si c'est ce que tu cherchais

Soit Entier une variable de type short (16 bits) et c1,et c2 deux variables de types char (soit 8 bits)
int Entier;
char c1,c2;

Si j'ai bien compris tu veux stocker les 16bits de Entier dans  c1 etc2?

pour se faire, il faut utiliser les opérations bit a bitc1Entier >> 8 ; /* si ton compilateur se plaint, écris c1  (Entier >>8) & 0xFF; */
c2 = Entier & 0xFF;

ou c1 contiendra les 8 bits de poids forts de Entier et c2 contiendra 8 bits de poids faibles de Entier.

Une formule un peu plus générale pour stocker une variable de n'importe quelle taille dans n char

int64_t variable_a_stocker; /*remplace int64_t par la valeur que tu veux */
/*travail sur variable_a_stocker*/

char c[sizeof(variable_a_stocker)/sizeof(char)];

for(int i=0 ; i< sizeof(variable_a_stocker)/sizeof(char) ; i++)
c[i]=variable_a_stocker>>(8*i) & 0xFF;

/*c[0] contient les bits de poids faibles, c[7] contient les bits de poids forts de variable_a_stocker */

avec une petite adaptation mineure on peut aussi stocker ca dans autre chose que des char... je te laisse experimenter si tu veux.

Si j'ai repondu a cote de la plaque, desole, mais j'ai pas compris ce que tu voulais... :(
Messages postés
70
Date d'inscription
mercredi 1 octobre 2008
Statut
Membre
Dernière intervention
17 avril 2013

Bonjour,

Vous avez bien compris ma demande, votre solution est claire et précise !

Grand merci et a bientôt.

Cordialement

Romain