2013-06-16 14 views
5

Mam ciąg binarny w pliku, który wyglądaJak utworzyć bitset z łańcucha binarnego?

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100100101101100110000110100110110111000010100110110110110111000011001000010110010010001100010010001010010010100001011001100010100001100100011011101

(która wynosi 256 bitów). Czy mogę bardzo szybko ustawić ten ciąg jako wartość bitset<256>?

Obecnie robie

for (int t = sizeof(c) - 1; t > 0; t--) { 
    if (c[t] == '1') { 
     b |= 1; 
    } 
    b <<= 1; 
} 
b >>= 1; 

Ale moje wyniki są nieprawidłowe.

+0

Czy na pewno 't = sizeof (c) -1' jest poprawne? Czym jest "sizeof (c)"? – Patashu

+1

Tak, jest na to konstruktor. – chris

Odpowiedz

5

mogę ustawić ten ciąg jako wartość bitset < 256> naprawdę szybko?

Tak, można po prostu użyć constructor, poniższy przykład jest wzięty bezpośrednio z dokumentu i pracuje dla 256 także:

std::string bit_string = "110010"; 
std::bitset<8> b3(bit_string);  // [0,0,1,1,0,0,1,0] 

std::cout << b3.to_string() << std::endl ; 
+0

Dzięki, działało idealnie. Zapomniałem o tej funkcji. –

1

Dlaczego nie uzyskać dostępu bezpośrednio do indeksów? jak ..

b[t] = c[t] - '0';