【问题标题】:Convert char or string to bitset in c++在 C++ 中将字符或字符串转换为位集
【发布时间】:2023-04-08 11:23:01
【问题描述】:

我正在做一项关于 DES 加密的作业,但我似乎无法将字符串转换,更不用说将字符转换为位集了。谁能告诉我如何在 C++ 中将单个字符转换为位集?

【问题讨论】:

  • std::bitset 接受用于构造的字符串。你考虑过使用它吗?
  • 评论应该被接受。

标签: c++ des


【解决方案1】:

以下内容:

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

应该可以。

http://ideone.com/PtSFvz


如果可能的话,将任意长度的 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;
  }
}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-02
    • 2020-02-20
    • 2015-04-20
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    相关资源
    最近更新 更多