2011-02-03 13 views
6

I tienen una cadena de 8 Char largo que contieneusando recipiente bitset en C++

8 bytes el volcado hexadecimal es

se 801,000,000,000,000

Significa bit 1 y 12 está encendido.

¿Cómo puedo usar la función bitset en C++ y hacer mi vida más fácil?

Gracias

+4

¿Cuál es la pregunta? No veo '?' Allí. – karlphillip

+0

@karlphillip ..any? * ahí. –

Respuesta

7

Para hacer qué? ¿Dónde está la pregunta? Realmente no puedo dar un buen ejemplo de "cómo te hará la vida más fácil" sin un problema que resolver. Todo lo que puedo hacer es mostrarle los conceptos básicos de cómo funciona la clase en la aplicación.

Aquí hay un enlace en su interface. Si desea manejar solo un conjunto de bits simple y constante, puede crear uno fácilmente. Si desea uno que pueda crecer o reducirse, mire al Boost. Aquí está un ejemplo rápido con la norma bitset:

std::bitset<40> imFiveBytesLong; 

imFiveBytesLong.set(0, true); 

ahora parece que

0000000000000000000000000000000000000001 

con el bit 0 ª. Y se puede probar para ver si se establece el bit preguntando:

bool isItSet = imFiveBytesLong.test(0); 

O puede contar el número de bits puestos preguntando:

std::size_t numSet = imFiveBytesLong.count(); 

Editar:

Para responder su comentario a continuación echa un vistazo al to_ulong método de bitset y uno de los constructors de bitset. Poniéndolo juntos:

int main() 
{ 
    std::bitset<10> mySet(120ul);   // initialize from unsigned long 

    std::cout << mySet.to_uLong();   // print as an unsigned long 

    return 0; 
} 
+0

¿Cómo puedo hacer que mi cadena sea perfectamente sin firmar e inicializar desde la longitud sin signo? – user79292