[gull] déserialiser une valeur double (ieee 754) avec be64toh

Daniel Cordey dc at mjt.ch
Thu Mar 1 17:50:04 CET 2012


On Thu, 1 Mar 2012 15:53:22 +0100 - Philippe Strauss
<philippe at strauss-acoustics.ch> wrote:

> sur le fil avec wireshark j'ai un champ à :
> 
> 0xC0 44 00 00 00 00 00 00, ce pour la valeur -40.0 encodée. d'après
> binaryconvert.com, c'est juste.
> 
> en C je fais:
> 
>         case volume:
>             dprintf("a volume message: %f; mute: %d\n",
> be64toh(msgp->payload.vol.volume), be32toh(msgp->payload.vol.mute));
>             break;
> 
> j'ai pas l'air d'avoir de décalage dans mes bytes, et pourtant
> s'affiche:
> 
> parsing msg, mtype=30, a volume message: 1330613449.029229; mute: 0

Tu veux dire que ce qui passe sur le reseau est correcte (0xC0 44
00 ...), mais qu'a l'impression la conversion en 'host' ne se fait
pas ? Es-tubien certain que msgp->payload.vol.volume est bien en BE ?
Perso, j'afficherais msgp->payload.vol.volume en 0x pour etre sure de
ce que j'essaie de convertir... 

Ou alors il y a quelque chose que je n'ai pas compris... :-)

dc




More information about the gull mailing list