Skip to content

Binaire Fortran C++ : Ajout

15 décembre 2009

J’ai lancé mes programmes d’écriture sur une machine 64 bits : une DELL Precision 670 avec Xubuntu 64 bits.
J’ai fait la lecture des headers et queues des fichiers binaires et ceux-ci sont codés sur 4 octets.
Il semble bien que l’hypothèse émise que les 32 bits sont sur 4 octets et 64 bits sur 8 octets soit fausse.

J’ai de plus codé un moyen d’écrire les fichiers binaires FORTRAN en C++, j’écris l’header et la queue comme un simple int (4 octets) contenant la taille de la chaîne de nombres qui suivent ou précèdent (respectivement pour header et queue, correspondant à l’encadrement du write de FORTRAN). Peut-être qu’en réalité FORTRAN ne fait que ça???
Ceci marche très bien dans mon cas.

Ainsi l’équivalent de la commande :

open(unit=11,file=’toto_bin’,form=’unformatted’)

write(11)(b(k),k=1,2) ! On ecrit b(k) pour k allant de 1 à 2

close(11)

Sera en C++ :

ofstream entree (“toto_bin”, ios::out | ios::binary);

int bin_size;

bin_size = 2 * sizeof(double);

entree.write((char *)&bin_size, sizeof(int));

entree.write((char *)&b[1], sizeof(double));

entree.write((char *)&b[2], sizeof(double));

entree.write((char *)&bin_size, sizeof(int));

EDIT : Sur un cluster sous DEBIAN 64 bits, la taille du header et de la queue est toujours de  4 octets. Encore une preuve…

No comments yet

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :