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
_______________________________________________
gull mailing list
[email protected]
http://forum.linux-gull.ch/mailman/listinfo/gull

Répondre à