2013-06-16 19 views
5

I (256 bit olan) İkili dizeden bir bitset nasıl oluşturabilirim?

gibi

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100100101101100110000110100110110111000010100110110110110111000011001000010110010010001100010010001010010010100001011001100010100001100100011011101

görünen bir dosyada bir ikili dize var. Bu dize bitset<256> değerini gerçekten hızlı bir şekilde ayarlayabilir miyim?

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

yapıyorum Ama sonuç yanlıştır.

+0

Emin misin 't = sizeof (c) -1' doğru? Sizeof (c) nedir? – Patashu

+1

Evet, bunun için bir kurucu var. – chris

cevap

5

Gerçekten çabuk> bir bit kümesi < 256 değeri olarak bu dize ayarlayabilir miyim?

Evet, sadece constructor kullanabilirsiniz, aşağıda örnek belgeden doğru alınır ve aynı zamanda 256 için çalışır:

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

Teşekkürler, mükemmel çalıştı. Bu özelliği unuttum. –

1

Neden endekslerle doğrudan erişilmiyor? gibi ..

b[t] = c[t] - '0'; 
İlgili konular