2013-06-16 17 views
5

Ich habe eine binäre Zeichenfolge in einer Datei, die wieWie erstelle ich ein Bitset aus Binärzeichenfolge?

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100100101101100110000110100110110111000010100110110110110111000011001000010110010010001100010010001010010010100001011001100010100001100100011011101

(was 256 Bits) aussieht. Kann ich diese Zeichenfolge wirklich schnell auf den Wert bitset<256> setzen?

Derzeit mache ich

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

Aber meine Ergebnisse sind falsch.

+0

Sind Sie sicher, dass 't = sizeof (c) -1' ist richtig? Was ist 'sizeof (c)'? – Patashu

+1

Ja, es gibt einen Konstruktor dafür. – chris

Antwort

5

Kann ich diese Zeichenfolge als Wert eines bitset < 256> wirklich schnell?

Ja, können Sie einfach die constructor verwenden, das folgende Beispiel wird direkt aus dem Dokument genommen und arbeitet für 256 auch:

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

Danke, hat perfekt funktioniert. Ich habe diese Funktion vergessen. –

1

Warum nicht direkt auf die by-Indizes zugreifen? wie ..

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