2013-06-16 9 views
5

Ho una stringa binaria in un file che assomigliaCome si crea un set di bit dalla stringa binaria?

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100100101101100110000110100110110111000010100110110110110111000011001000010110010010001100010010001010010010100001011001100010100001100100011011101

(che è 256 bit). Posso impostare questa stringa come valore di un bitset<256> molto rapidamente?

Attualmente sto facendo

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

Ma i miei risultati non sono corretti.

+0

Sei sicuro 't = sizeof (c) -1' è corretta? Cos'è 'sizeof (c)'? – Patashu

+1

Sì, c'è un costruttore per questo. – chris

risposta

5

Posso impostare questa stringa come il valore di un bitset < 256> molto in fretta?

Sì, si può semplicemente utilizzare il constructor, nell'esempio qui sotto è tratto proprio dal documento e lavora per 256 così:

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

Grazie, ha funzionato perfettamente. Ho dimenticato questa funzione. –

1

Perché non accedere direttamente agli indici? come ..

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