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 :

C++ Lire Fichier Dat File


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre � l'essai
    Inscrit en
    Juin 2010
    Messages
    4
    D�tails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 4
    Par d�faut C++ Lire Fichier Dat File
    Bonjour,
    j'aurais une question sur la lecture de fichier en C++ a partir d'un code matlab effectu�.
    Voici le code matlab tout dabord

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    function [intensity] = readHi3D(filename)
     
    mark = 0;
    ccdx = 1536;
    ccdy = 512;
    q = fopen(filename);
    fseek(q, 0, 'eof');
    filesize = ftell(q);
    fseek(q,0,'bof');
    numcolumns = 1536;
    numprofiles = filesize/4/numcolumns;
    raw8 = fread(q,[3*ccdx + mark, inf], '4616*uint8', 3*ccdx + mark);
    fclose(q);
    size(raw8);
    intensity = raw8(1 + mark:ccdx + mark,:)';
    lb = raw8(ccdx+mark+1:2:3*ccdx+mark-1,:)';
    hb = raw8(ccdx+mark+2:2:3*ccdx+mark,:)';
    range = double(lb) + double(hb)*256;
    Ce code permet de lire un fichier du format .dat qui quand on l'ouvre par exemple avec un traitement de texte affiche par exemple
     *440<.**0,2,:24@:<H6D<`:8>>>.H<:H6@44HD(  
    et lorsqu'on affiche ce fichier avec matlab on obtient une matrice
    0 0 0 0 1 1 2
    par exemple.

    Le code matlab traduit donc les caracteres en chiffre: Le fichier est donc "crypt�" on dira pour me simplifier les mots. La traduction en matlab se fait avec le
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    fread(q,[3*ccdx + mark, inf], '4616*uint8', 3*ccdx + mark);
    qui precise donc le fichier a traduire (q), puis si jai bien compris la taille , le type de byte. A = fread(fileID, sizeA, precision, skip).

    Il faudrait a present que je fasse de meme en C++. Les fonction ifstream sont possibles, je peux ouvrir un fichier, je peux le ""lire"" mais je n'obtient pas dutout le meme resultat. Il faudrait que je convertisse les caracteres en chiffre. Et voici la question . Comment peut on ecrire cela en C++ ?
    Car lire un simple fichier avec des lettres ou chiffre je sais faire, mais quand j'ai un fichier avec des caracteres crypt�s je ne vois pas comment faire. Il faut peut etre preciser les bytes ou je ne sais pas.

    Pouvez vous m'aider , cela serait tres gentil de votre part.
    Cela peut etre une aide en anglais ou francais ou meme allemand ... cela ne me pose pas de probleme.

    Je vous remercie par avance ,
    bonne journ�e

  2. #2
    Invit�
    Invit�(e)
    Par d�faut
    Ton code Matlab n'�crit pas un contenu "crypt�"...Simplement, il �crit en binaire dans le fichier.

    C'est-�-dire que s'il doit �crire :
    Il �crira en fait en unsigned int 8 bits, c'est-�-dire :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    00000001
     
    00000010
     
    00000011
    Quand t'ouvres le fichier avec un traitement de texte, il essaie d'exprimer ces bits comme des caract�res, �a donne donc effectivement n'importe quoi.


    En C++, il faut d�j� ouvrir ce fichier en mode binaire (je crois que c'est celui par d�faut, mais bon...) avec :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    open("tonfichier.dat", std::ios::binary);
    Ensuite il faut que tu fasses l'extraction, et pour �a on utilise d'habitude l'op�rateur >>. Seul inconv�nient : il n'est sans doute pas surcharg� pour le type qui t'int�resse ici (et qui est un peu b�tard).


    Donc le plus simple c'est sans doute d'utiliser la fonction read() avec la taille en bits de ce uint8 utilis� par Matlab, pour stocker ce fichier dans un buffer de ce type.

  3. #3
    Membre � l'essai
    Inscrit en
    Juin 2010
    Messages
    4
    D�tails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 4
    Par d�faut Merci
    Okej,
    J'ai mieux compris maintenant le probleme, cela ne veut pas dire que je peux le resoudre de suite comme ca, mais j'ai compris ce qui n'allait pas, et c'est un bon point de comprendre !
    Donc en fait javais fait le ifstream et le blabla de lecture sans preciser la taille de bytes 8uint par exemple. Donc je vais travailler sur ca.

    Merci beaucoup !

Discussions similaires

  1. [WD-2007] Comment lire fichier date files (.dat) ?
    Par boubas53 dans le forum Word
    R�ponses: 2
    Dernier message: 13/09/2014, 13h16
  2. Lire fichier .dat .atr .hea avec matlab
    Par punkisnotdead dans le forum Autres Logiciels
    R�ponses: 1
    Dernier message: 24/11/2010, 16h31
  3. R�ponses: 1
    Dernier message: 02/04/2007, 09h30
  4. Fichier .dat MSSQL, comment le lire ?
    Par Ricot dans le forum MS SQL Server
    R�ponses: 3
    Dernier message: 26/09/2006, 16h26
  5. lire le contenu d'une fichier .Dat
    Par zidenne dans le forum Delphi
    R�ponses: 10
    Dernier message: 28/07/2006, 12h27

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