Voici une demie réponse à mon problème, qui pourra je l'espère dépanner d'autres personne :
La fonction marche pour N = 15 mais je pense qu'elle est valable pour d'autres également.
q : le nombre au format Qn
n : l'indice de Qn
double QNToFloat(short q,unsigned char n)
{
double x = 0.0; // Résulat de la conversion
bool bitsign = (q>>n)&0x01; // Obtenir le signe de la variable au format Q15
for(int i=(n-1); i>=0;i--)
{
// Formule de conversion
x = ( (q>>i)&0x01) * Math::Pow(2,(-1)*(n-i)) + x;
}
// Nombre négatif ou positif
if (bitsign)
{
x = x-1.0;
}
return x;
}
Attention : La Fonction puissance est une fonction C++ .NET, elle est à remplacer pour l'utiliser en C.
Il me reste à faire la même chose mais dans l'autre sens.
Si quelqu'un sait le faire, çà me dépannerait beaucoup,
merci d'avance,
Gwen
Message édité par gwenCPP le 16-05-2006 à 11:55:22
---------------
Dans la vie le meilleur chemin n'est pas forcément le plus droit mais celui sur lequel on se sent le plus à l'aise