[gull] convertir du IEEE 754 16bit en décimal

François py at topmusic.ch
Sat Jun 19 09:56:00 CEST 2010


Bonjour,
> Je cherche à convertir en notation décimal un flottant 16 bit IEEE 754
> issu d'un automate.
> Est-ce quelqu'un à un bout de code PHP à me proposer?
>
> Car pack et unpack fonctionne qu'avec 32 et 64 bits.
>
> Pour tester j'ai sorti les valeurs suivantes au multimètre.
> -10000mV ->  D8F0
>   10000mV ->  2710
>
> Puisque j'y suis, est-ce qu'il y a un moyen de faire cette conversion
> en console bash?
>    
Je suis plus à l'aise en python, mais c'est facilement transposable en php.
Le truc est d'utiliser le 15è bit :

$python
 >>> 0XD8F0 | (-1 ^ 0xFFFF)*(0XD8F0>>15)
-10000
 >>> 0x2710 | (-1 ^ 0xFFFF)*(0x2710>>15)
10000

ou en micro script
*------ IEEE16b.py ------*
#!/usr/bin/python
import sys
n=eval("0x"+sys.argv[1])
print n | (-1 ^ 0xFFFF)*(n>>15)
*---------------------------------*
 >>> ./IEEE16b.py 2710
10000
 >>> ./IEEE16b.py d8f0
-10000

François


More information about the gull mailing list