4
我正在做一個DES加密任務,我似乎無法將字符串轉換成字符串,更不用說將char轉換爲bitset。任何人都可以告訴我如何將單個字符轉換爲C++中的bitset?將char或string轉換爲C++中的bitset
我正在做一個DES加密任務,我似乎無法將字符串轉換成字符串,更不用說將char轉換爲bitset。任何人都可以告訴我如何將單個字符轉換爲C++中的bitset?將char或string轉換爲C++中的bitset
以下:
char c = 'A';
std::bitset<8> b(c); // implicit cast to unsigned long long
應該工作。
轉換的任意長度的string
到bitset
是較硬,如果在所有可能的。編譯時必須知道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;
}
}
這可能有點低效,但我不不知道是否有更好的解決辦法。
['std :: bitset'](http://en.cppreference.com/w/cpp/utility/bitset)接受構造字符串。你有沒有考慮過使用它? –
評論應該被接受的答案。 –