Bonjour,

mon souci est le suivant :
j'ai des fichiers .dat provenants d'un programme écrit en pascal. Mon but est d'arriver à récupérer les données contenues dans le fichier .dat avec un programme écrit dans un autre langage (Matlab).

Je connais la structure des données, par exemple :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
     tarc = record             (* enregistrement d'un arc  *)  
         numarc : [key(0)] integer ;    (* numero de l'arc *)
         pkdebarc,pkfinarc : real ;     (* pk de debut et de fin de l`arc *)
         pol    : integer  ;            (* polarisation de l'arc *)
         end  ;
Donc là pas de souci je vais dire à mon programme d'ouvrir le fichier en lecture binaire, puis de lire successivement un entier sur 8 bits, 2 réels sur 32 bits, puis un entier sur 8 bits et recommencer ainsi de suite.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
        numarc(i) = fread(fid, 1, 'uint32');
        pkdeb(i) = fread(fid,1,'float32');
        pkfin(i) = fread(fid,1,'float32');
        pol(i) = fread(fid,1,'uint32');
Là où je bloque c'est pour arriver à lire ce qui est contenu dans un "packed array". Si j'ai bien compris le fonctionnement des packed arrays, 4 mots de 8 bits se trouvant dans 4 cases de 32 bits vont être regroupés dans une seule case de 32 bits.

Comment puis-je faire pour connaître la façon dont les données ont été organisées ?
Si je dis à ma fonction de lire par blocs de 32 bits je vais non pas me retrouver avec une seule valeur mais 4 :s

Merci pour votre aide.