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 :

Lire bit par bit


Sujet :

C++

  1. #1
    Membre habitué
    Inscrit en
    Décembre 2004
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 12
    Par défaut Lire bit par bit
    Je sais lire dans un fichier octet par octet mais je me demandais si on pouvais le faire bit par bit et si oui comment.
    Ou sinon il faut lire octet par octet et le convertir en binaire (existe il une librairie qui le fait car j'ai fait une fonction qui convertit en binaire mais c'est pas vraiment top)
    merci

  2. #2
    Membre émérite Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Par défaut
    Lire bit à bit un fichier n'est pas possible.

    Au mieux tu peux lire octets par octets, tu lis les bits de chaque octet par opérations binaires '&' successives.

    Je ne vois pas bien ce que tu veux faire, mais d'un point de vu performances, il est mieux de lire le fichier par blocs d'octets et ensuite de travailler sur chaque octet.

  3. #3
    Membre habitué
    Inscrit en
    Décembre 2004
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 12
    Par défaut
    je me doute bien que niveau performance c'est pas top je posais surtout cette question par curiosite car je trouvais etonnant que l'on ne puisse pas travailler directement au niveau des bits.

    En fait il y a pas de type qui correspondent vraiment au bit le plus petit type est le char ou bool qui sont codes sur un octet,c'est bien ca ?

  4. #4
    Membre émérite Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Par défaut
    Tout à fait ça.

    Pour travailler sur les bit on utilise les opérateurs binaires.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    unsigned char BitField = 0x00;
     
    BitField |= 0x03;
     
    if (BitfField & 0x03)
       cout << "Troisième bit à un << endl;
     
    BitField &= 0x04;
     
    if (BitfField & 0x03)
       cout << "Troisième bit à un << endl;
    else
      cout << "Troisième bit à zéro << endl;

  5. #5
    Membre habitué
    Inscrit en
    Décembre 2004
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 12
    Par défaut
    ok merci

  6. #6
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    En C++ tu as std::bitset qui peut te simplifier la tâche.

  7. #7
    Membre habitué
    Inscrit en
    Décembre 2004
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 12
    Par défaut
    euh ca marche comment ca?

  8. #8
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <bitset>
     
    char MonOctet = 0x58; // par exemple
     
    std::bitset<8> Bits(MonOctet);
    Bits[3] = 1;
    Bits[5] = 0;
    cout << Bits[7];
     
    // etc...
    Avec une doc de référence tu auras tout ce qu'il faut

    http://c.developpez.com/faq/cpp/?pag...ERALITE_cppdoc

  9. #9
    Membre habitué
    Inscrit en
    Décembre 2004
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 12
    Par défaut
    Merci beaucoup

Discussions similaires

  1. [Débutant] XOR bit par bit en binaire.
    Par jboubou dans le forum MATLAB
    Réponses: 5
    Dernier message: 19/05/2012, 02h46
  2. Copie bit par bit avec dd
    Par adm_windoz dans le forum Debian
    Réponses: 8
    Dernier message: 07/06/2008, 09h52
  3. [caml-light] Lire un fichier bit a bit
    Par m312 dans le forum Caml
    Réponses: 4
    Dernier message: 23/08/2007, 19h02
  4. Manipulation d'un String bit par bit
    Par CyberChouan dans le forum Langage
    Réponses: 1
    Dernier message: 26/04/2007, 15h48
  5. Comment lire un char bit a bit ?
    Par damien99 dans le forum C++
    Réponses: 9
    Dernier message: 02/02/2006, 21h57

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