2013-02-23 6 views
1

Je dois implémenter Bit-Strings dans mon code (selon les paramètres donnés dans certaines normes).Bit-Strings In C

Certains des paramètres standard sont des chaînes de bits (avec des longueurs différentes = 3, 7, 24, 1024 etc.).

je les ai définis comme: (Exemple: Bit-chaîne de longueur 3)

#define SIZE 1 

struct bt_string 
{  
    /* Array will be min 1 Byte Long, 
    * this parameter stores the number of Bits 
    * actually being used */ 
    unsigned short int bit_length; 

    char bit_string [SIZE]; 
} sample_bit_string; 

Je ne suis pas autorisé à utiliser les champs de bits. Est-ce que quelqu'un peut suggérer (si possible) une meilleure façon de mettre en œuvre ceci?

+4

Quelles sont les exigences exactes? Quelles parties spécifiques avez-vous des problèmes avec? –

+0

La mise en œuvre ci-dessus fonctionne pour moi. Je cherchais simplement une meilleure approche (si possible) - puisque le standard C ne prouvait aucun moyen de décaler une variable longue d'un bit. –

+0

Il y a probablement plusieurs façons d'implémenter une classe de chaîne de bits, mais il est impossible de les comparer sans un moyen de mesure qui soit "meilleur". –

Répondre

3

Je suppose que le bitmap est ce que vous cherchez. (Wiki: http://en.wikipedia.org/wiki/Bitmap) Et, un exemple d'implémentation porté à partir du noyau Linux: http://code.google.com/p/ulib/source/browse/trunk/src/base/bitmap.c.

+0

Merci Eric. L'implémentation ci-dessus est proche de bitmap uniquement. Si j'ai besoin d'une longueur de bits de 7 bits, je prends un tableau long de 1 octet et je maintiens le nombre de bits pour le réglage des 7 bits seulement. Bitmap a également besoin de la même entrée. –