在c ++中将char或string转换为bitset

Shi*_*III 4 c++ des

我正在做DES加密的任务,我似乎无法转换字符串,更不用说将字符串转换为bitset.谁能告诉我如何将单个字符串转换为C++中的bitset?

Ale*_*lec 5

下列:

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

应该管用.

http://ideone.com/PtSFvz


如果可能的话,将任意长度转换string为a 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;
  }
}
Run Code Online (Sandbox Code Playgroud)

这可能有点低效,但我不知道是否有更好的解决方法.