Décodage d'un float, besoin d'aide !

Fermé
ebloo Messages postés 3 Date d'inscription jeudi 21 juin 2007 Statut Membre Dernière intervention 25 juin 2007 - 23 juin 2007 à 00:04
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 25 juin 2007 à 10:22
Bonjour,

Je rencontre un problème concernant le codage d'un float dans un fichier. Je ne suis pas un expert en langage C, d'où ma question...

Voici mon problème:

J'ai un fichier DATA qui contient un float codé sur 4 octets. Lorsque je lis ce fichier grâce au logiciel X utilisant ce fichier data propriétaire, j'obtiens la valeur originale, soit :

float = 2591,83 codé BC 6B 2E 45 dans le fichier.

Seulement voilà, je voudrais utiliser ce fichier propriétaire dans le programme que je developpe et je voudrais donc pouvoir récupérer ce float. Or, je n'y arrive pas. De plus, lorsque j'écris un float égal à 2591,93 dans un fichier, j'obtiens des codages différents, soit :

Sur calculatrice TI92 avec TIGCC (compilateur GCC) : 40 03 25 91
Sur Macbook Intel avec Xcode (GCC également) : E1 F6 21 45

Première question, pourquoi le codage est'il différent entre deux machines ? Le codage d'un float n'est il pas standard ?
Deuxième question, quelqu'un peut'il m'aider à décoder le fichier original ?

Merci d'avance pour votre aide !

5 réponses

moi.néo Messages postés 1132 Date d'inscription vendredi 17 septembre 2004 Statut Membre Dernière intervention 9 juin 2011 86
23 juin 2007 à 01:15
First question : le codage dépend de l'implémentation, donc c'est pas standard.
Second : je comprend pas trop ton histoire de codage de fichier avec un float !!!
0
ebloo Messages postés 3 Date d'inscription jeudi 21 juin 2007 Statut Membre Dernière intervention 25 juin 2007
24 juin 2007 à 22:49
Merci pour ta réponse.

Précision sur le codage : j'ai écrit un petit programme qui contient un float et qui écrit ce float dans un fichier. Selon la machine, le fichier lu dans un lecteur Hexadécimal ne donne pas le même résultat, bien que le float soit le même...
0
moi.néo Messages postés 1132 Date d'inscription vendredi 17 septembre 2004 Statut Membre Dernière intervention 9 juin 2011 86
24 juin 2007 à 22:57
dans un lecteur Hexadécimal, tu peux préciser ?
0
ebloo Messages postés 3 Date d'inscription jeudi 21 juin 2007 Statut Membre Dernière intervention 25 juin 2007
25 juin 2007 à 09:15
"dans un lecteur Hexadécimal, tu peux préciser ? "

Un programme qui permet de lire le contenu d'un fichier informatique sous forme héxadécimale...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
25 juin 2007 à 10:22
Salut.
Je n'ai pas tout compris ton lien entre Gcc et le float, comment est-tu sur que les octets que tu vois sont bien le float codé ?
Sinon, ton problème n'est pas évident. Ce que je sait sur les float :
se sont en fait deux nombre entiers : un pour pour le "corps" (la mantisse je crois) du nombre et un pour la puissance.
Ensuite, selon le codage, il est possible d'attribuer plus ou moins de bit à l'exposant. Viens ensuite le problème du signe, j'ai vu une fois que le signe (codé sur 1 bit) pouvait être soi au début soit à la fin de l'entier.
Monconseil : pour essayer de comprendre ce qui se passe, essai avec plusieurs nombre : prend ton nombre, ajoute lui 1, ton nombre multiplier par 2 (décalage de certains bit, ceux de la puissance ou ceux de la mantisse) multiplie le par 10 ou 16.
Ou alors, prend des nombres simple genre 1 2 4, 128 etc. qui devrai te permettre de comprendre plus simplement le codage. Je ne suis pas sur que l'hexadecimal soit la meilleur forme pour comprendre ce qui est fait.
0