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

Marc Mongenet marc at mongenet.ch
Fri Mar 2 21:41:12 CET 2012


Tiens des questions techniques sur la liste aujourd'hui.
Avec du C en plus, miam !

D'abord le cas de 1.01.
Ce nombre ne peut pas être représenté
exactement en flottant, c'est aussi bête que ça.
Avec le site http://binaryconvert.com
précédemment cité, j'arrive à l'approcher
en float (32 bits) avec :
1.01000010967254638671875 (0x3F8147AF)
et
1.0099999904632568359375 (0x3F8147AE)

En double, 0x3FF028F5C28F5C29 donne
1.010000000000000008881784197
et 0x3FF028F5C28F5C28 donne
1.00999999999999978683717927197.

Pour 0xC044000000000000,
que donne quelque-chose comme
printf("%llx %llx\n", msgp->payload.vol.volume,
be64toh(msgp->payload.vol.volume) ?

Marc


More information about the gull mailing list