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