Bonjour,
Comment puis-je faire pour convertir un fichier ascii de "flottant" en fichier binaire "big endian"?
Merci par avance
-----
Bonjour,
Comment puis-je faire pour convertir un fichier ascii de "flottant" en fichier binaire "big endian"?
Merci par avance
Pourrais-tu développer un peu ta question? Tu veux le programmer toi-même, ou tu cherches un logiciel? Je ne comprends pas ce que tu veux faire avec le fichier : un fichier n'est jamais "flottant"...
oups, jai pas été très clair...
donc le fichier que jai créée sous matlab est juste une colonne de flottants,
et jai besoin de le convertir en fichier binaire !
Malheureusement je n'y connais rien pour ainsi dire en programmation
Merci pour ton intéret
Bonjour
Si je comprend bien, ton fichier source est donc composé d'informations signifiant des nombres flottants, et tu veux pouvoir recuperer ces donnees sous une autre forme.
Des le moment où tu traite de l'information par ordinateurs, celles-ci se presentent sous forme binaire: une suite de 0 et de 1.
Un fichier est donc une information binaire et ce, quel que soit le format employé: .doc, .jpg, .rtf... etc etc
Ensuite, son traitement et son rendu va dependre du logiciel utilise pour le creer, et de la nature de ces informations.
Pour repondre a ta question, il faut donc que l'on connaisse
1) l'extension de ce fichier contenant ces nombres flottants
2) La destination à laquelle ces informations sont vouees, c'est a dire que veux tu récupérer precisement pour les traiter et de quelle manière?
A priori, la demarche est la suivante:
parcours du fichier source
reperage des donnees a recuperer
lecture de ces donnees
ecriture de ces donnees vers le fichier de destination
A bientot
bonjour,
d'accordBonjour
Si je comprend bien, ton fichier source est donc composé d'informations signifiant des nombres flottants, et tu veux pouvoir recuperer ces donnees sous une autre forme.
Des le moment où tu traite de l'information par ordinateurs, celles-ci se presentent sous forme binaire: une suite de 0 et de 1.
Un fichier est donc une information binaire et ce, quel que soit le format employé: .doc, .jpg, .rtf... etc etc
Ensuite, son traitement et son rendu va dependre du logiciel utilise pour le creer, et de la nature de ces informations.
il s'agit d'un tableau de données composés de nombres flottants
issu d'un programme matlab (par l'intermédiaire d'un "save" pour faire un format ASCII)
donc j'y met l'extension que je veux...
In fine, c'est fichier "purement" binaire que je désire... pour l'introduire dans un autre programme réclamant ce format!
Apparemment (mais je n'y connais rien) je crois que c'est parce que
pour de très gros fichier, c'est beaucoup plus rapide....
Bref un fichier où on arrive à rien lire de concret avec un "éditeur de texte"
à part des caractères n'importe comment
(Désolé si je suis pas très clair)
J'ai bien essayé avec la fonction fwrite de matlab...
mais à la lecture le prog en question ne lit pas les bonnes valeurs
Mais il ouvre bien le fichier!!!
NB: une idée me vient si j'ouvre avec un éditeur, je vois qu'il me sort les chiffres sous la forme exponentielle, du style 100 -> 1.0e+02
Ca peut venir de là???? puisqu'après en convertissant en binaire il crée l'équivalent du "e"
et je sais pas comment changer ça sous matlab...
Merci par avance
C'est pourtant bien la fonction fwrite qu'il faut utiliser, maintenant il faut savoir quelle précision ton programme lit les données, et si celle-ci est différente à la précision MATLAB.
Il faut donc que tu précise l'argument 'precision' en appelant fwrite avec 'integer', 'float' ou 'double'...
Merci pour ta réponse!C'est pourtant bien la fonction fwrite qu'il faut utiliser, maintenant il faut savoir quelle précision ton programme lit les données, et si celle-ci est différente à la précision MATLAB.
Il faut donc que tu précise l'argument 'precision' en appelant fwrite avec 'integer', 'float' ou 'double'...
Mais j'ai essayé diverses possibilités... et rien n'y fait
et le prog réclame une colonne de "float"....
Au passage, c'est quoi les différences entre le IEEE, le cray etc. évoqué pour fread dans matlab?
IEEE (le ou be), VAX, CRAY sont des formats de codages différents pour les nombres à virgules flottantes, celui que tu dois utiliser dépends de la machine cible, donc à choisir entre 'ieee-le' ou 'ieee-be' pour du little endian ou big endian (je suppose que tu n'as pas de CRAY ni de VAX).
Il faut que tu sois sur du format de lecture de ton programme, il attends des 'float' (donc des flottants 32 bits), mais little endian ou big endian? Parce que ca change tout, par exemple 1 en flottant IEEE 32 bits little endian donne 0x0000803f, et si tu le lis en big endian tu trouveras 32831!
Il l'a déjà dit c'est big endian.
@vin_100 : Mais à mon avis tu fais fausse route. Le problème c'est que tu penses qu'il suffit d'écrire des nombres au format binaire pour qu'il soit lisible dans un autre programme. Hors souvent, l'utilité de sauvegarder dans un format binaire est qu'on rajoute de l'information supplémentaire qu'il serait long d'écrire sous forme textuelle (et surtout fastidieux à relire, bien que ça devient habituel avec le format XML). Ainsi donc, si tu sauvegardes juste les nombres au format binaire et que tu essayes de les ouvrir avec Word, rien ne se passera. Il faut bien plus d'information dans ton document. Et c'est le cas d'un format Matlab par exemple.
Si tu nous disais exactement, du début, ce que tu comptes faire ?
Parce que si c'est pour lire ton fichier dans Matlab, il y a bien plus simple ?
Si c'est pour utiliser un programme qui lit des fichiers provenant de Matlab, il faut que tu reconstruises le fichier comme Matlab le fait (donc chercher dans la spécification si c'est indiqué).
Bonjour et merci...@vin_100 : Mais à mon avis tu fais fausse route. Le problème c'est que tu penses qu'il suffit d'écrire des nombres au format binaire pour qu'il soit lisible dans un autre programme. Hors souvent, l'utilité de sauvegarder dans un format binaire est qu'on rajoute de l'information supplémentaire qu'il serait long d'écrire sous forme textuelle (et surtout fastidieux à relire, bien que ça devient habituel avec le format XML). Ainsi donc, si tu sauvegardes juste les nombres au format binaire et que tu essayes de les ouvrir avec Word, rien ne se passera. Il faut bien plus d'information dans ton document. Et c'est le cas d'un format Matlab par exemple.
non non je ne faisais pas fausse route
après quelques tentatives en ascii (mais le programme n'accepte que des petit fichier dans ce cas...), je me suis rendu compte que l'erreur venait de l'ecriture sous forme scientifique, j'ai donc créer un nouveau fil car je n'arrive pas 0 la changer sous matlab
Mais si je fais les premières à la main ca marche!!!!
Mais plusieurs dizaines de milliers (au minimum!!!), ca risque d'etre pénible...
NB: Pour la petite histoire, le coup de vice était pas évident à voir, car il apparait seulement à partir de 10 (il lisait pas ce qu'il y avait derrière le "e"),
et j'avais testé que jusque 8 (c'est ballot)