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

Philippe Strauss philippe at strauss-acoustics.ch
Thu Mar 1 15:53:22 CET 2012


Hello,

Je tombe sur un problème bizarre, cela paraît cul-cul la praline, mais bon, marche pas :-(

j'ai codé deux petits bouts de soft, un côté en caml, l'autre en C.
la partie caml encode un flottant 64 bits selon ieee 754, l'envoie en mode big endian par udp.

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

-40.0 s'est muté en 1330613449.029229.

nucht gut...

si qqun est déjà passé par là, ça m'intéresse.

--
Philippe Strauss
http://www.strauss-acoustics.ch/







More information about the gull mailing list