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 :

afficher ler 0/1 d'un fichier


Sujet :

C++

  1. #1
    Membre très actif
    Homme Profil pro
    root
    Inscrit en
    Janvier 2013
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : root

    Informations forums :
    Inscription : Janvier 2013
    Messages : 174
    Par défaut afficher ler 0/1 d'un fichier
    Salut à tous.
    J'aimerais afficher un fichier en binaire (donc sortir sa version binaire en des 0/1).

    Merci d'avance pour vos aides.

  2. #2
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    Citation Envoyé par kripteks Voir le message
    Salut à tous.
    J'aimerais afficher un fichier en binaire (donc sortir sa version binaire en des 0/1).

    Merci d'avance pour vos aides.
    1/ ça ne va pas vraiment t'aider, parce que la sortie ne sera pas vraiment lisible. Généralement, on affiche en caractères hexadécimal.

    2/ si vraiment tu souhaite le faire, alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    std::vector<unsigned char> bytes; // le contenu du fichier
    for (std::size_t i = 0; i < bytes.size(); ++i) {
        std::bitset<8> bs(bytes[i]);
        std::cout << bs.to_string();
        if ((i & 0x7) == 0) // tous les 8 caractères
            std::cout << std::endl;
        else
            std::cout << " ";
    }
    Pour plus d'infos sur std::bitset<> : http://www.cplusplus.com/reference/bitset/bitset/
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  3. #3
    Membre Expert Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Par défaut
    Simple curiosité.
    Si on récupère les caractères dans des unsigned char et que l'on affiche avec int stoi(const string & str, size_t * idx = 0, int base = 10); (avec une base de 2) de C++11, obtient-on le résultat voulu ?

  4. #4
    Membre Expert
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Par défaut
    Citation Envoyé par Ehonn Voir le message
    Simple curiosité.
    Si on récupère les caractères dans des unsigned char et que l'on affiche avec int stoi(const string & str, size_t * idx = 0, int base = 10); (avec une base de 2) de C++11, obtient-on le résultat voulu ?
    Non, car stoi s'attendra à ce que ton string est un '1' ou un '0' pour chaque caractère.

  5. #5
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    sinon, il y a std::hex

    Il suffit alors de boucler sur les chars.

  6. #6
    Membre Expert Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Par défaut
    Citation Envoyé par Iradrille Voir le message
    Non, car stoi s'attendra à ce que ton string est un '1' ou un '0' pour chaque caractère.
    En effet, j'avais lu la description de la fonction en diagonale...

Discussions similaires

  1. Réponses: 70
    Dernier message: 02/02/2007, 17h52
  2. Réponses: 3
    Dernier message: 25/11/2006, 12h56
  3. Afficher, rechercher et remplacer dans un fichier
    Par lynal dans le forum Langage
    Réponses: 1
    Dernier message: 13/06/2006, 21h24
  4. [Image] Afficher image récupérée par FTP sans fichier temporaire
    Par grinder59 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 18/05/2006, 09h17
  5. Afficher tous les "cout" dans un fichier
    Par tibouchou dans le forum SL & STL
    Réponses: 6
    Dernier message: 18/03/2006, 12h08

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