Bonjour,

j'ai des nombres en long int ( sur 4 octets ) que je souhaite ajouter dans une trame de char.
pour ce faire, j'utilise le procédé suivant :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
char RX_Value[30];
long int valeur=123456;
RX_Value[0] = valeur       & 0xFF;
RX_Value[1] = (valeur>>8)  & 0xFF;
RX_Value[2] = (valeur>>16) & 0xFF;
RX_Value[3] = (valeur>>24) & 0xFF;
jusque là tout va bien

Maintenant j'aimerai fais la meme chose pour un nombre codé en float ( 4 octets ).

j'ai essaye le code suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
long int *tmp;
float valeur_float;
valeur_float = 123456.2;
tmp=&valeur_float;
afin d'avoir dans tmp les 4 octets qui me permettraient de stocker ensuite dans le tableau de char :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
RX_Value[0] = *tmp  & 0xFF;
RX_Value[1] = (*tmp>>8)  & 0xFF;
RX_Value[2] = (*tmp>>16) & 0xFF;
RX_Value[3] = (*tmp>>24) & 0xFF;
Mais le compilater ( visual studio ) refuse de compiler en mettant le message d'erreur suivant :

c:\projet\ttcpip.cpp(367) : error C2440: '=' : cannot convert from 'float *' to 'long *'

Quelqu'un sait-il comment réussir à copier ce float sur un char de 4 octet ( sans qu'il n'y ait de conversion ) ?

Merci d'avance