2014-04-17 39 views
4

我正在做一個DES加密任務,我似乎無法將字符串轉換成字符串,更不用說將char轉換爲bitset。任何人都可以告訴我如何將單個字符轉換爲C++中的bitset?將char或string轉換爲C++中的bitset

+2

['std :: bitset'](http://en.cppreference.com/w/cpp/utility/bitset)接受構造字符串。你有沒有考慮過使用它? –

+0

評論應該被接受的答案。 –

回答

5

以下:

char c = 'A'; 
std::bitset<8> b(c); // implicit cast to unsigned long long 

應該工作。

參見http://ideone.com/PtSFvz


轉換的任意長度的stringbitset是較硬,如果在所有可能的。編譯時必須知道bitset的大小,所以沒有辦法將字符串轉換爲一個字符串。

但是,如果你知道在編譯時的字符串的長度(或者可以在編譯時綁定的話),你可以這樣做:

const size_t N = 50; // bound on string length 
bitset<N * 8> b; 
for (int i = 0; i < str.length(); ++i) { 
    char c = s[i]; 
    for (int j = 7; j >= 0 && c; --j) { 
    if (c & 0x1) { 
     b.set(8 * i + j); 
    } 
    c >>= 1; 
    } 
} 

這可能有點低效,但我不不知道是否有更好的解決辦法。

相關問題