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 1 bit d'un fichier en C


Sujet :

C

  1. #1
    Membre averti

    Homme Profil pro
    Inscrit en
    Mars 2002
    Messages
    0
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 0
    Points : 314
    Points
    314
    Par défaut Lire 1 bit d'un fichier en C
    Comment fais t-on ?????????? Je voudrais Verifier l'état de certains bit dans un fichier et je sais pas comment faire pour ne lire que certain bit vu que l'on ne peut prendre que des octets.
    De plus est-ill possible de créer une struct contenant des variables de n bits de longueur ?

    Merci
    :GREG:

  2. #2
    Membre régulier
    Inscrit en
    Mars 2002
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 84
    Points : 89
    Points
    89
    Par défaut
    et non je ne crois pas que cela soit faisable, il faut y aller a l'octet et a l'aide de masques recupere les donnees exemple

    je lis un char (car) du fichier
    je veux recupere le bit de poids faible:

    bit=car & 1;

    je veux le 3eme bit de poids faible:
    bit=car & 4;
    je veux le bit de poids fort:
    bit = car >>7;
    //cela decale tous le nombre de 7 crans vers la droite en rajoutant 0 a gauche


    etc etc...

    Sinon oui on peut faire des structs pour stocker plusieurs bits:mais tu les stockera dans des types connu : char,int, double etc...

  3. #3
    Membre émérite

    Homme Profil pro
    Urbaniste
    Inscrit en
    Mars 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Mars 2002
    Messages : 255
    Points : 2 717
    Points
    2 717
    Par défaut
    Lire le bit x de l'octet (unsigned char) Octet :
    bit = Octet >> (x-1) & 1;

    Modifier le bit x à 1 (true) :
    Octet = Octet | (1 << (x-1);

    Modifier le bit x à 0 (false) :
    Octet = Octet & !(1 << (x-1);
    (pas sûr pour la modification)
    @+ Haypo

    Pour te former au C lis les tutoriels et cours de C : http://c.developpez.com/cours/

  4. #4
    fd
    fd est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 131
    Points : 162
    Points
    162
    Par défaut Bits
    Pour une struct :

    struct BoundScale { // bound scale of system header
    uint bs_buffer_bound_size : 13;
    uint bs_buffer_bound_scale : 1;
    uint bs_reserved : 2;
    uint bs_stream_id : 8;
    };

    donc int (ou uint var : x; // x == nbr de bits de var

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

Discussions similaires

  1. Réponses: 19
    Dernier message: 16/02/2012, 19h50
  2. [DOM] Meilleure facçon de lire et d'écrire un fichier XML
    Par newfsch dans le forum Format d'échange (XML, JSON...)
    Réponses: 8
    Dernier message: 12/05/2004, 10h17
  3. [Debutant] Comment lire la taille d'un fichier binaire ?
    Par Invité dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 18/12/2003, 19h20
  4. Lire un attribut dans un fichier XML en C++
    Par ti.k-nar dans le forum XML
    Réponses: 2
    Dernier message: 14/10/2002, 15h22
  5. Réponses: 5
    Dernier message: 20/08/2002, 18h01

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