Erreur de lecture ?
maniqk
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je cherche à convertir des nombres écrits en binaire 32 bits (pour des float single precision) en float. Je ne sais pas si c'est clair mais en gros j'ai 32 bits qui représentent un float, et je veux écrire le float correspondant.
Exemple : 11000001000000000000000000000000 -> -8
Le fait est que mes nombres sont écrits dans un fichier généré par un autre programme.
Le problème est que j'ai l'impression qu'il ne lit pas correctement mes données.
En fait, je lis ma ligne que je stocke dans une chaine[32].
Là, à l'aide du printf je remarque qu'il me donne la correspondance ASCII des caractères lus.
Avec l'exemple pris ci-dessus, quand je fais printf(chaine[0]); il m'affiche "49" ce qui correspond au caractère ASCII du chiffre "1".
Du coup, j'ai fait le traitement suivant :
Là du coup, quand je print mon nouveau chaine[0] je trouve bien mon "1".
Par contre, ensuite je veux faire la conversion...
J'épargne les détails mais quand je fais printf("%d",(-1)^(int)chaine[0]); il me sort -2...
Est ce que quelqu'un verrait pourquoi ?
De fait, lorsque je fais ma conversion "totale" du nombre, au lieu de trouver -8, je trouve 70...
Voilou, merci d'avance pour vos éclaircissements,
maniqk
Je cherche à convertir des nombres écrits en binaire 32 bits (pour des float single precision) en float. Je ne sais pas si c'est clair mais en gros j'ai 32 bits qui représentent un float, et je veux écrire le float correspondant.
Exemple : 11000001000000000000000000000000 -> -8
Le fait est que mes nombres sont écrits dans un fichier généré par un autre programme.
Le problème est que j'ai l'impression qu'il ne lit pas correctement mes données.
En fait, je lis ma ligne que je stocke dans une chaine[32].
Là, à l'aide du printf je remarque qu'il me donne la correspondance ASCII des caractères lus.
Avec l'exemple pris ci-dessus, quand je fais printf(chaine[0]); il m'affiche "49" ce qui correspond au caractère ASCII du chiffre "1".
Du coup, j'ai fait le traitement suivant :
for(i=0;i<32;i++){ chaine[i] -= 48; }
Là du coup, quand je print mon nouveau chaine[0] je trouve bien mon "1".
Par contre, ensuite je veux faire la conversion...
J'épargne les détails mais quand je fais printf("%d",(-1)^(int)chaine[0]); il me sort -2...
Est ce que quelqu'un verrait pourquoi ?
De fait, lorsque je fais ma conversion "totale" du nombre, au lieu de trouver -8, je trouve 70...
Voilou, merci d'avance pour vos éclaircissements,
maniqk
A voir également:
- Erreur de lecture ?
- Confirmation de lecture whatsapp - Guide
- Accusé de lecture gmail - Guide
- Iptv erreur de lecture - Forum TV & Vidéo
- Lecture gratuite - Télécharger - Vie quotidienne
- Erreur 3000 france tv - Forum Lecteurs et supports vidéo