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

Philippe Strauss philippe at strauss-acoustics.ch
Fri Mar 2 22:04:32 CET 2012


On Fri, Mar 02, 2012 at 09:41:12PM +0100, Marc Mongenet wrote:
> Pour 0xC044000000000000,
> que donne quelque-chose comme
> printf("%llx %llx\n", msgp->payload.vol.volume,
> be64toh(msgp->payload.vol.volume) ?

avec %lx cela affichait 0, je suis en x86_64 il ne me semble pas que le
second l change quoique ce soit dans ce cas.

les macros be64toh et compagnie acceptent un uint64_t en entrée, donc il
y a le cast automatique floats <-> ints qui entre en action pas pour le
meilleur dans ce cas.

marrant, ocaml n'a pas de type champs de bits natif propre au langage,
mais C non plus, C ne fait pas mieux dans ce cas.

et c'est même l'inverse, avec camlp4, une librairie "ocaml-bitstring"
existe permettant de bidouiller les bits de manière plutôt élégante.

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


More information about the gull mailing list