我正在做DES加密的任务,我似乎无法转换字符串,更不用说将字符串转换为bitset.谁能告诉我如何将单个字符串转换为C++中的bitset?
下列:
char c = 'A';
std::bitset<8> b(c); // implicit cast to unsigned long long
Run Code Online (Sandbox Code Playgroud)
应该管用.
如果可能的话,将任意长度转换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)
这可能有点低效,但我不知道是否有更好的解决方法.
| 归档时间: |
|
| 查看次数: |
8837 次 |
| 最近记录: |