2011-02-03 11 views
6

mam ciąg 8 char długo, że zawierapomocą bitset pojemnik C++

8 bajtów szesnastkowej ma

jest 801000000000000

Oznacza to, bit 1 i 12 jest włączony.

Jak używać funkcji bitset w języku C++ i ułatwiać życie.

Dzięki

+4

Na czym polega pytanie? Nie widzę tam żadnego "?". – karlphillip

+0

@karlphillip ..any? * tam. –

Odpowiedz

7

Co zrobić? Gdzie jest pytanie? Nie mogę dać dobrego przykładu "jak to ułatwi ci życie" bez problemu do rozwiązania. Wszystko, co mogę zrobić, to pokazać podstawowe zasady działania klasy w aplikacji.

Oto link na jego interface. Jeśli chcesz obsłużyć tylko prosty, stały zestaw bitów, możesz go łatwo stworzyć. Jeśli chcesz taki, który może się rozwinąć lub skurczyć, spójrz na numer Boost. Oto krótki przykład ze standardowym bitset:

std::bitset<40> imFiveBytesLong; 

imFiveBytesLong.set(0, true); 

Teraz wygląda na to,

0000000000000000000000000000000000000001 

z 0th ustawionym bitem. I można przetestować, aby sprawdzić, czy bit jest ustawiony, pytając:

bool isItSet = imFiveBytesLong.test(0); 

Albo można policzyć liczbę bitów ustawionych pytając:

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

Edycja:

Aby odpowiedzieć twój komentarz poniżej sprawdź metodę bitset i jeden z zestawu bitów. Łączenie:

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

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

    return 0; 
} 
+0

Jak mogę uczynić mój ciąg idealnie unsigned długi i zainicjować od unsigned długi? – user79292