IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Conversion float -> n octets


Sujet :

C

  1. #1
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 507
    Par défaut Conversion float -> n octets
    Bonjour,

    Dans un programme en C, je désire écrire des "float" dans un fichier sur un nombre d'octet(s) n. Un float étant codé sur 4 octets, si n vaut 4 ou plus, cela ne pose pas trop de problème. L'ennui c'est quand n est inférieur à 4... Je ne vois pas comment traiter le problème.

    Deuxiement problème : je veux passer d'un float big endian à un float little endian (tous les deux sur 4 octets). Pour des entiers, pas de problèmes, il suffit d'inverser les octets. Pour les floats, ça ne marche pas... il doit y avoir une astuce supplémentaire?

    Merci de votre aide.

  2. #2
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Citation Envoyé par Fabllot
    Bonjour,

    Dans un programme en C, je désire écrire des "float" dans un fichier sur un nombre d'octet(s) n. Un float étant codé sur 4 octets, si n vaut 4 ou plus, cela ne pose pas trop de problème. L'ennui c'est quand n est inférieur à 4... Je ne vois pas comment traiter le problème.

    Deuxiement problème : je veux passer d'un float big endian à un float little endian (tous les deux sur 4 octets). Pour des entiers, pas de problèmes, il suffit d'inverser les octets. Pour les floats, ça ne marche pas... il doit y avoir une astuce supplémentaire?

    Merci de votre aide.
    fwrite???

  3. #3
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Fabllot
    Dans un programme en C, je désire écrire des "float" dans un fichier sur un nombre d'octet(s) n.
    Comprends pas. Tu veux ecrire par-dessus des données existantes ?
    Un float étant codé sur 4 octets, si n vaut 4 ou plus, cela ne pose pas trop de problème. L'ennui c'est quand n est inférieur à 4... Je ne vois pas comment traiter le problème.
    Tu veux faire rentrer un objet de taille n dans un objet de taille < n ? C'est pas possible. Ca parait évident, non ?
    Deuxiement problème : je veux passer d'un float big endian à un float little endian (tous les deux sur 4 octets). Pour des entiers, pas de problèmes, il suffit d'inverser les octets. Pour les floats, ça ne marche pas... il doit y avoir une astuce supplémentaire?
    L'astuce, c'est de ne pas utiliser les formats binaires natifs, qui, comme tu le constates, ne sont pas portables. C'est pas un scoop...
    • soit tu utilises un format texte (le plus simple)
    • soit tu utilises un format binaire standard (XDR etc) et c'est compliqué.

  4. #4
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 507
    Par défaut
    Désolé... En fait fwrite fonctionnait, c'était une erreur dans mon code...

    Pour mon second problème, je n'ai pas le choix... je travaille sur des fichiers audio, ce qui m'oblige à utiliser des formats binaires...
    Cependant je pense que mon problème est partiellement résolu... Reste à savoir si je tiens en compte les fichiers écrit sous mac et lu sur un pc (ou vice-versa) , ce qui emmellera les big et les little endians !

    Merci comme même.

  5. #5
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Fabllot
    Pour mon second problème, je n'ai pas le choix... je travaille sur des fichiers audio, ce qui m'oblige à utiliser des formats binaires...
    Cependant je pense que mon problème est partiellement résolu... Reste à savoir si je tiens en compte les fichiers écrit sous mac et lu sur un pc (ou vice-versa) , ce qui emmellera les big et les little endians !
    Le format du fichier doit être spécifié et immuable (indépendant de la machine). C'est aux couches basses de l'application de faire les conversions.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Conversion Float -> Binaire
    Par javaDev dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 27/11/2006, 16h33
  2. [TIMESTAMP] conversion float -> timestamp
    Par yridwenn dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 11/08/2006, 12h10
  3. Problème conversion float vers double
    Par jhenaff dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 27/01/2006, 10h39
  4. probleme de conversion float en int
    Par murreya dans le forum C++
    Réponses: 2
    Dernier message: 17/12/2005, 15h27
  5. Conversion float vers int
    Par vargasvan dans le forum C
    Réponses: 2
    Dernier message: 05/10/2005, 17h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo