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 :

[Binaire] Comment s'y prendre ?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2004
    Messages : 93
    Par défaut [Binaire] Comment s'y prendre ?
    Bonjour à tous !

    Eh bien voilà... j'ai eu l'idée peu originale de faire un compresseur (décompresseur) de fichier dans le but de me faire un peu la main (algo et c++).

    Deux questions me viennent pour l'instant :

    1) Est-ce possible de charger un fichier en binaire dans un buffer ?
    2) Si oui, comment ? Puis, est-ce possible de travailler directement sur le buffer. Par exemple j'ai une suite de 1000111001010101 (exemple fictif) bah j'aimerais la prendre tel quel et la modifier en 1,2,3,52,1,0,0,1,1,12 (exemple fictif mais c'est à base d'entier et de virgules) et, ensuite, réécrire ce "code pseudo-binaire" sous forme d'un fichier qui représente l' "archive compressée".

    Le tout dans le but de permettre une décompression : reprendre le code pseudo-binaire et puis le retransformer en code binaire et l'enregistrer sous forme de fichier "normal" sachant qu'il y aura une sorte de "header" interne au fichier qui contiendra l'extention du (des) fichier(s) (au plusieurs pour le long terme car je compte pouvoir y mettre plusieurs fichiers (dans l'archive).

    Voilà voilà (suis-je fou ?). Je précise que j'ai un niveau très moyen et que je ne maitrise pas le C++... mais ça, c'est pas un problème j'ai juillet/aout pour finir ce projet.

    En tous cas je vous remercie pour vos réponses . (j'ai évidemment effectué une recherche mais pas rencontré le même genre d'idée que moi et/ou j'avais des problèmes pour l'adaptation).

    Pour info j'ai "Le langage C++" de B. Stroustrup (est-ce qu'il suffira ?).



    Ah oui, j'ai failli oublier : à ce stade-ci le rendement n'est pas du tout ma priorité (que du contraire...).
    Et tant que j'y suis, le(s) fichier(s) à compresser seront non spécifiés. Donc du jpeg au texte en passant par des mp3 (même si les formats multimédia sont déjà compressés... en gros c'est pour ca que je compte passer en binaire : pour faire abstraction du contenu du fichier)).

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Le C++ ne permet pas de travailler sur les bits directement, mais il te suffit de faire une classe de lecture bit par bit et c'est bon. Si tu prends un ifstream en mode binaire, tu lis comme sur un buffer - logique, C'EST un buffer -

  3. #3
    Membre confirmé
    Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2004
    Messages : 93
    Par défaut
    Citation Envoyé par Miles
    Le C++ ne permet pas de travailler sur les bits directement, mais il te suffit de faire une classe de lecture bit par bit et c'est bon. Si tu prends un ifstream en mode binaire, tu lis comme sur un buffer - logique, C'EST un buffer -
    Je t'avoue ne pas avoir tout compris .

    Donc, si je comprends bien :

    1) faire une classe de lecture bit par bit
    2) c'est bon ?

    3) => j'ai rien compris

    Un rien plus sérieusement, la classe de lecture bit par bit ça veut dire quoi exactement ? Je dois l'implémenter moi-même ? Ca me parait assez étrange et je ne vois pas du tout par où commencer... aurais-tu une idée s'il te plaît ?

    Merci en tous cas

  4. #4
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Tu récupères des octets que tu vas traiter, mais tu dois créer une classe de traitement perso.

  5. #5
    Membre confirmé
    Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2004
    Messages : 93
    Par défaut
    D'accord merci je comprends un peu mieux.

    Je comprends aussi que je n'ai pas les compétences pour l'instant et que ça risque de me prendre un petit temps. Je vais donc utiliser google pour voir si quelqu'un n'a pas déjà inventé cette roue.

    Par contre, j'ai une autre petite question : est-ce qu'il y a un langage de programmation qui permet de prendre en charge de manière native les binaires ? (ou qui me permettra de faire ce que je veux un peu plus vite ?)

    Mais bon je vois déjà à peu près la réponse étant donné que le C++ est un langage qui peu aller en assez bas niveau donc bon. Puis je ne sais pas si c'est plus facile d'apprendre un autre langage que de créer une classe...


    edit :

    fopen, fclose, fread, fwrite avec ça je devrais pouvoir arriver à quelque chose ?

    http://www.cplusplus.com/ref/cstdio/fopen.html => avec le mode "wb"

  6. #6
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Attention tu confonds, là. Binaire au sens où on travaille sur les bits, ce n'est pas la même chose que le format binaire de lecture sur les flux...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [LDAP] comment s'y prendre pour faire une recherche complexe
    Par dervish dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 10/03/2006, 14h56
  2. [MySQL] Comment s'y prendre pour une expiration après deux jours ?
    Par isa150183 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 21/01/2006, 20h36
  3. MySQL sous linux comment s'y prendre?
    Par Doberman dans le forum Débuter
    Réponses: 4
    Dernier message: 10/01/2006, 11h58
  4. Site multilingue : comment s'y prendre ?
    Par sg-40 dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 26/04/2005, 14h40
  5. Webbrowser : Comment ne pas prendre la page en cache
    Par cedm78 dans le forum Web & réseau
    Réponses: 3
    Dernier message: 30/08/2002, 11h17

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