des — конвертировать char или string в bitset в стеке переполнения

Я делаю задание по шифрованию DES и не могу преобразовать строку, не говоря уже о символе, в набор битов. Может кто-нибудь показать мне, как преобразовать один символ в битовый набор в C ++?

4

Решение

Следующие:

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

должно сработать.

Увидеть http://ideone.com/PtSFvz


Преобразование произвольной длины string к 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;
}
}

Это может быть немного неэффективно, но я не знаю, есть ли лучший обходной путь.

5

Другие решения


По вопросам рекламы [email protected]